Насколько я знаю, @this обозначает текущий компонент, запускающий событие, например:
<p:commandButton process="@this" ... />
И в JSF 2 Ajax @this также может означать инкапсулирующий компонент, например:
<h:inputText ...>
<f:ajax execute="@this" ... />
</h:inputText>
И у меня есть один случай, когда использование p: datatable, включая или исключая @this, может иметь иное влияние на частичный submit Ajax
В этом примере в этом процессе процесс использует @this, и это работает так, как ожидалось, когда сначала происходит процесс, а затем setPropertyActionListener и last, выполняется действие:
<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 имеет другое значение, отличное от текущего компонента, возможно, текущую запись в этом примере?
Im, использующий 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>