2013-01-17 175 views
0

我在p:datatable中使用primefaces命令链接,并在用户单击链接时使用。它应该导航到另一个页面,包括从表中选择的对象的特定信息。我不使用任何ajax标签。问题是,当第一次点击链接时,它不会调用动作,实际上什么也没有发生,并且第二次点击它就可以工作。这里是我的代码:p:commandLink在p:dataTable不会在第一次点击时调用动作,但只在第二次点击时调用

JSF与数据表

<h:form> 
     <h:outputText value="Nothing is found" rendered="#{searchView.citizenSearchList.rowCount==0}"/> 

     <p:dataTable var="cust" value="#{searchView.citizenSearchList}" dynamic ="true" paginator="true" rows="5" paginatorAlwaysVisible="false" style="width: 700"> 
      <p:column> 
       <f:facet name ="header"> 
        <h:outputText value="name "/> 
       </f:facet> 
       <h:outputText value="#{cust.name}"/> 
      </p:column> 
      <p:column> 
       <f:facet name ="header"> 
        <h:outputText value="lastname "/> 
       </f:facet> 
       <h:outputText value="#{cust.citizenList.get(0).lastname}"/> 
      </p:column> 
      <p:column> 
       <f:facet name ="header"> 
        <h:outputText value="Id "/> 
       </f:facet> 
       <h:outputText value="#{cust.registernumber}"/> 
      </p:column> 
      <p:column> 
       <f:facet name ="header"> 

       </f:facet> 
       <p:commandLink value="See" action="#{customerView.prepareCitizenView()}"/> 
      </p:column> 
     </p:dataTable> 

    </h:form> 

ManagedBean:customerView的操作方法

@ManagedProperty(...) 
SearchView searchview; 
public String prepareCitizenView(){ 
    this.customer = (Customer) searchview.citizenSearchResultList.getRowData(); 
    if(this.customer != null) 
     return "citizeninfo"; 
    else 
     FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN, "no data.", "no data")); 
     return null; 


} 

ManagedBean:搜索查看

DataModel citizenSearchResultList; 

public DataModel getCitizenSearchResultList() { 
    return citizenSearchResultList; 
} 
+0

默认情况下,PrimeFaces'p:commandLink'和'p:commandButton'使用ajax。所以声明“我不使用任何ajax标签”没有理由。问题是,你究竟如何执行实际的搜索行为,应该在该表中显示结果?还有一个'p:commandButton'? – BalusC

回答

0

您可以返回重定向到同一页面。 customerView.prepareCitizenView可以重定向到同一页面。根据你使用什么

0

由于穆罕默德彻纳尔指出 像

return "citizeninfo.jsf?faces-redirect=true"; 

这个“JSF”的转变,解决方法是在你的导航结果使用重定向。我自己有这个问题。

return“citizeninfo.jsf?faces-redirect = true”;

从我可以推断,原因是ajax提交将不包含新页面的ViewState请求参数。第一次没有ViewState的时候,事情就会崩溃。

一旦执行重定向,重定向将正确地具有附加到所述请求的视图状态参数,和按钮可点击第一次

0

如果p:commandLink包含2个小时内:形式然后行动将是在第二次调用时调用。 检查p的外部标签:commandLink

相关问题