当我使用p:commandLink时,结果页面不会被转发,但是h:commandLink可以正常工作。
<p:dataTable id="resultTable" var="row" value="#{userFinder.list}">
<p:column headerText="#{i18n.user_name}">
<p:commandLink id="selectUserLink" **actionListener**="#{userSelector.edit}" value="#{row.userName}" ajax="false"/>
</p:column>
</p:dataTable>
VS
<p:dataTable id="resultTable" var="row" value="#{userFinder.list}">
<p:column headerText="#{i18n.user_name}">
<h:commandLink id="selectUserLink" action="#{userSelector.edit}" value="#{row.userName}"/>
</p:column>
</p:dataTable>
UserSelectorImpl.java
@ConversationScoped
@Named("userSelector")
public class UserSelectorImpl extends AbstractEntitySelector<User> implements
IUserSelector
{
...
@Override
public Class<? extends ViewConfig> edit()
{
conversation.begin();
.. do some stuff
return Pages.AdminPages.UserMaintenance.EditUser.class;
}
...
}
Pages.java
@Page(navigation = REDIRECT)
public interface Pages extends ViewConfig
{
...
@Secured(AdminAccessDecisionVoter.class)
public interface AdminPages extends Pages
{
public @Page class AdminPage implements AdminPages {}
interface UserMaintenance extends AdminPages
{
public @Page class EditUser implements UserMaintenance {}
...
}
}
}
我加倍检查,我有/webapp/pages/adminPages/userMaintenance/editUser.xhtml
提前致谢, d。
答案 0 :(得分:1)
ActionListener方法不会转发/重定向到结果。你应该使用action =“”
<p:commandLink id="selectUserLink" action="#{userSelector.edit}" value="#{row.userName}" ajax="false"/>