2012-08-01 38 views
3

我試圖在selectOneRadio值被選中時提交表單。我有下面的代碼,但它沒有進入我的#{contentEditorBacking.addNewsArticle}JSF如何通過selectOneRadio的onchange提交表單

有沒有人知道我可以進入方法時selectOneRadio被點擊?

<p:panel header="News Article Title"> 
    <h:panelGrid columns="2"> 
     <h:outputLabel for="title" value="Title" style="font-weight: bold;"/> 
     <p:inputText id="title" required="true" value="#{contentEditorBacking.newsTitle}" /> 
     <h:outputLabel value="Site" /> 
     <p:selectOneRadio value="#{contentEditorBacking.selectedNews}" layout="pageDirection" onchange="submit()"> 
      <f:selectItem itemLabel="Public" itemValue="Public" /> 
      <f:selectItem itemLabel="Member" itemValue="Member" /> 
     </p:selectOneRadio> 
     <p:commandButton value="submit" action="#{contentEditorBacking.addNewsArticle}" /> 
    </h:panelGrid> 
</p:panel> 

回答

9

兩個問題:

  • 要攔截在單選按鈕(和複選框) 「改變」 你需要click事件來代替。
  • <p:commandButton>默認情況下是一個ajax按鈕,它沒有準備好像JS submit()執行的同步提交。

只需使用<p:ajax>,以便提交由ajax執行。請注意,您不需要指定event屬性,它已經默認爲click

<p:selectOneRadio value="#{contentEditorBacking.selectedNews}" layout="pageDirection"> 
    <f:selectItem itemLabel="Public" itemValue="Public" /> 
    <f:selectItem itemLabel="Member" itemValue="Member" /> 
    <p:ajax listener="#{contentEditorBacking.addNewsArticle}" /> 
</p:selectOneRadio> 
<p:commandButton value="submit" action="#{contentEditorBacking.addNewsArticle}" /> 

更新按照該意見,你似乎想導航到另一個頁面的參數。然後,addNewsArticle()方法應如下所示,以便它與<p:ajax listener><p:commandButton action>兼容。

public void addNewsArticle() throws IOException { 
    ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext(); 
    ec.redirect(ec.getRequestContextPath() + "/next.xhtml?action=add"); 
} 
+0

在我的addNewsArticle中,我返回一個帶有url +查詢字符串的字符串,所以我不能做一個ajax提交。 – Catfish 2012-08-01 14:19:30

+0

您在最初的問題中對此並不清楚。你沒有說明具體的功能要求。那就去做第一種方法吧。順便說一下,如果該方法除了返回一個字符串之外別無其他,那麼你也可以直接將這個唯一的字符串直接放在'action'屬性中,比如'action =「next.xhtml?action = add」'左右。不要忘記禁用ajax的行爲:) – BalusC 2012-08-01 14:20:39

+0

對不起,沒有具體說明,我試圖保持這個問題的簡短和重點。我實際上檢查了幾件事情,然後生成一個字符串,所以我需要使用後備方法。 – Catfish 2012-08-01 14:23:57