gpt4 book ai didi

jsf - @this的功能到底是什么?

转载 作者:行者123 更新时间:2023-12-03 08:30:00 24 4
gpt4 key购买 nike

据我所知 @this 表示触发事件的当前组件,例如:

<p:commandButton process="@this" ... />

在JSF 2 Ajax中, @this 也可以表示封装组件,例如:
<h:inputText ...>
<f:ajax execute="@this" ... />
</h:inputText>

我有一种情况,使用 p:datatable ,包括或排除 @this 对Ajax部分提交有不同的影响

在此示例中,在这种情况下,该过程使用 @this ,并且此过程按预期工作,首先发生该过程,然后是 setPropertyActionListener ,最后是 操作:
<p:column>
<p:commandLink
value="#{anggaranDetail.map['code']}"
process="@this infoAnggaranForm:Anggaran"
update="detailDialogForm:Anggaran detailDialogForm:SubAnggaran"
oncomplete="infoAnggaranDialog.hide()"
image="ui-icon ui-icon-search"
action="#{tInputBean.updateAnggaranSubAnggaran}">
<f:setPropertyActionListener value="#{anggaranDetail}"
target="#{infoAnggaranBean.selectedAnggaranDetail}" />
</p:commandLink>
</p:column>

但是,当我在此示例中省略 @this 时,就永远不会执行 setPropertyActionListener 操作,就好像它们不在那里一样。

我想知道为什么 ?也许 @this 除了当前组件(在本示例中为当前记录)以外还具有其他含义?

我正在使用tomcat 7,这些是我的依赖项:
<dependency>
<groupId>org.primefaces</groupId>
<artifactId>primefaces</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>2.0.4-b09</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>2.0.4-b09</version>
<scope>compile</scope>
</dependency>

最佳答案

PrimeFaces process和标准JSF execute属性应该指向以空格分隔的组件标识符,这些组件标识符应ajax请求在整个JSF生命周期中由JSF处理(获取请求参数,对其进行验证,更新模型,执行操作)。 process默认为当前表单@form,而execute默认为当前组件@this。在命令链接/按钮中,这是执行与链接/按钮本身关联的 Action 所必需的。
但是,在数据表中有process="@this infoAnggaranForm:Anggaran",因此要处理两个组件。如果省略@this但保留其他组件,那么它将仅处理/执行其他组件,而不处理链接/按钮组件。如果省略process属性,则默认为@form。如果您还有更多其他形式相同的输入组件,则也将对其进行处理。
根据具体的功能要求,您可以将其保留为process="@this infoAnggaranForm:Anggaran"或将其忽略。然后,JSF将至少完全按照您的需要处理/执行按钮和其他组件。
也可以看看:

  • Understanding PrimeFaces process/update and JSF f:ajax execute/render attributes
  • 关于jsf - @this的功能到底是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5699088/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com