3

selectOneRadioの値が選択されているときにフォームを送信しようとしています。私は以下のコードを持っていますが、それは私の中には入りません#{contentEditorBacking.addNewsArticle}

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>
4

1 に答える 1

9

2つの問題:

  • clickラジオボタン(およびチェックボックス)の「変更」を傍受するには、代わりにイベントが必要です。
  • デフォルトでは、<p:commandButton>JSによって実行されるような同期送信用に準備されていないajaxボタンです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");
}
于 2012-08-01T14:12:31.243 に答える