表单 – 为什么要显式地将process =“@ this”添加到p:commandButton以调用操作?

前端之家收集整理的这篇文章主要介绍了表单 – 为什么要显式地将process =“@ this”添加到p:commandButton以调用操作?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我知道我们需要显式地添加process =“@ this”以获取调用p:commandbutton动作,并且我也知道processface属性默认为@face.

由于进程默认为@form,因此该按钮也不会与表单中的其他元素一起处理,并且应该调用其操作.

任何人都可以解释这背后的确切原因吗?

解决方法

Process @form表示commandLink / Button的当前形式
进程@这意味着commandLink / Button的当前组件.检查以下代码.

process.xhtml

  1. <h:form id="form1">
  2. <h:inputText value="#{ProcessBean.id}" id="id"/><br/>
  3. <h:panelGroup id="panel_1">
  4. <h:inputText value="#{ProcessBean.name}" id="name"/><br/>
  5. </h:panelGroup>
  6. <h:panelGroup id="panel_2">
  7. <h:inputText value="#{ProcessBean.address}"/>
  8. <br/>
  9. <p:commandButton process="@form" value="Btm1" id="button1" action="#{ProcessBean.show}"/><!-- Default -->
  10. <p:commandButton process="@this" value="Btm2" id="button2" action="#{ProcessBean.show}"/>
  11. <p:commandButton process="@this form1:panel_1" value="Btm3" id="button3" action="#{ProcessBean.show}"/>
  12. </h:panelGroup>
  13. </h:form>

ProcessBean.java

  1. @ManagedBean(name = "ProcessBean")
  2. public class ProcessBean {
  3. private String id;
  4. private String name;
  5. private String address;
  6. public String getId() {
  7. return id;
  8. }
  9. public void setId(String id) {
  10. this.id = id;
  11. }
  12. public String getName() {
  13. return name;
  14. }
  15. public void setName(String name) {
  16. this.name = name;
  17. }
  18. public String getAddress() {
  19. return address;
  20. }
  21. public void setAddress(String address) {
  22. this.address = address;
  23. }
  24.  
  25. public void show() {
  26. System.out.println(id);
  27. System.out.println(name);
  28. System.out.println(address);
  29. }
  30. }

让我们的用户输入输入框

  1. 001 -> id
  2. Jone -> name
  3. London -> address

单击button1,将完成整个表单的所有JSF组件(例如:id,name,address).输出将是:

  1. 001
  2. Jone
  3. London

单击button2,该过程将是其自身(例如:button2).没有id,名称,地址的进程.输出将是:

  1. null
  2. null
  3. null

单击button3,所有JSF组件(例如:name)整个panel_1和button3将被处理.输出将是:

  1. null
  2. Jone
  3. null

调用你的动作方法调用之前可能存在验证或转换失败.

猜你在找的HTML相关文章