java – 使用请求范围的bean函数作为JSF中临时呈现按钮的操作
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 使用请求范围的bean函数作为JSF中临时呈现按钮的操作,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1809字,纯文字阅读大概需要3分钟。
内容图文
![java – 使用请求范围的bean函数作为JSF中临时呈现按钮的操作](/upload/InfoBanner/zyjiaocheng/826/7042cdc80b754ae0aa18a8257f1ffc93.jpg)
我在JSF中有以下基本(也许是愚蠢的)理解问题:
有一个JSF页面“testPage.xhtml”:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html">
<f:view>
<h:body>
<h:form>
<h:commandLink id="B1" value="B1" action="#{testBean.ctrl}"/>
<h:commandLink id="B2" value="B2" action="#{testBean.ctrl}"
rendered="#{testBean.renderB2}"/>
</h:form>
</h:body>
</f:view>
</html>
还有一个支持bean“TestBean.java”:
package test;
import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
@ManagedBean(name="testBean")
@RequestScoped
public class TestBean implements Serializable {
public static final long serialVersionUID = 1L;
private boolean renderB2 = false;
public String ctrl() {
setRenderB2(true);
System.out.println("ctrl() is called.");
return null;
}
public boolean getRenderB2() {
return renderB2;
}
public void setRenderB2(boolean renderB2) {
this.renderB2 = renderB2;
}
}
因此,两个链接都将TestBean.ctrl()作为操作.
首先只渲染B1.单击B1会导致执行TestBean.ctrl()并且也会渲染B2.
但是,单击B2然后不执行TestBean.ctrl().
这是我的问题:为什么点击B2时没有执行动作方法?
可能是因为B2没有再次渲染.但是为什么这会阻止动作方法的执行(由之前渲染的B2链接调用)?
解决方法:
这是因为在表单提交的应用请求值阶段期间再次重新评估呈现的属性.如果此时未呈现UIInput或UICommand组件,则JSF将不会应用该组件的请求值.即UIInput组件的模型值将不会更新,并且不会调用UICommand组件的操作.
因为您的bean是请求范围的,所以它会在显示表单的响应结束时被删除,并且通过表单提交的请求开始创建一个全新的表单.
您必须保留负责呈现的属性的任何请求范围属性.最简单的方法是将bean放在视图范围内,方法是将其标记为@ViewScoped,并确保从操作方法返回null或void,这些方法应回发到同一视图.
内容总结
以上是互联网集市为您收集整理的java – 使用请求范围的bean函数作为JSF中临时呈现按钮的操作全部内容,希望文章能够帮你解决java – 使用请求范围的bean函数作为JSF中临时呈现按钮的操作所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。