由于进程默认为@form,因此该按钮也不会与表单中的其他元素一起处理,并且应该调用其 *** 作.
任何人都可以解释这背后的确切原因吗?
解决方法 Process @form表示commandlink / button的当前形式进程@这意味着commandlink / button的当前组件.检查以下代码.
process.xhtml
<h:form ID="form1"> <h:inputText value="#{ProcessBean.ID}" ID="ID"/><br/> <h:panelGroup ID="panel_1"> <h:inputText value="#{ProcessBean.name}" ID="name"/><br/> </h:panelGroup> <h:panelGroup ID="panel_2"> <h:inputText value="#{ProcessBean.address}"/> <br/> <p:commandbutton process="@form" value="Btm1" ID="button1" action="#{ProcessBean.show}"/><!-- Default --> <p:commandbutton process="@this" value="Btm2" ID="button2" action="#{ProcessBean.show}"/> <p:commandbutton process="@this form1:panel_1" value="Btm3" ID="button3" action="#{ProcessBean.show}"/> </h:panelGroup></h:form>
ProcessBean.java
@ManagedBean(name = "ProcessBean")public class ProcessBean { private String ID; private String name; private String address; public String getID() { return ID; } public voID setID(String ID) { this.ID = ID; } public String getname() { return name; } public voID setname(String name) { this.name = name; } public String getAddress() { return address; } public voID setAddress(String address) { this.address = address; } public voID show() { System.out.println(ID); System.out.println(name); System.out.println(address); }}
让我们的用户输入输入框
001 -> IDJone -> nameLondon -> address
单击button1,将完成整个表单的所有JsF组件(例如:ID,name,address).输出将是:
001JoneLondon
单击button2,该过程将是其自身(例如:button2).没有ID,名称,地址的进程.输出将是:
nullnullnull
单击button3,所有JsF组件(例如:name)整个panel_1和button3将被处理.输出将是:
nullJonenull
不调用你的动作方法?调用之前可能存在验证或转换失败.
总结以上是内存溢出为你收集整理的表单 – 为什么要显式地将process =“@ this”添加到p:commandButton以调用 *** 作?全部内容,希望文章能够帮你解决表单 – 为什么要显式地将process =“@ this”添加到p:commandButton以调用 *** 作?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)