@this的功能到底是什么?

| 据我所知,@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的“ 4”和标准的JSF的“ 5”属性应指向以空格分隔的组件标识符,这些组件标识符应ajax请求在整个JSF生命周期中进行处理(获取请求参数,对其进行验证,更新模型,执行操作)。 form4ѭ默认为
@form
,当前形式,
execute
默认为component9ѭ,当前形式。在命令链接/按钮中,这是执行与链接/按钮本身关联的动作所必需的。 但是,在数据表中,您有
process=\"@this infoAnggaranForm:Anggaran\"
,因此需要处理两个组件。如果省略“ 9”但保留其他组件,则它将仅处理/执行其他组件,而不处理链接/按钮组件。如果省略
process
属性,则默认为
@form
。如果您还有更多其他相同形式的输入组件,那么它们也将被处理。 根据具体的功能要求,您可以将其保留为
process=\"@this infoAnggaranForm:Anggaran\"
,也可以将其省略。然后,JSF将完全按照您的意愿至少处理/执行按钮和其他组件。 也可以看看: 了解PrimeFaces流程/更新和JSF f:ajax执行/渲染属性     

要回复问题请先登录注册