10

エンティティを編集するページがあります。そのページには 2 つのコマンド ボタンがあります。1 つは「戻る」で、もう 1 つは「保存」で、そのページにも入力フィールド (idInputSubject) を含むフォームがあります。必須のものもあれば、そうでないものもあります。

「戻る」ボタンを押して (編集をキャンセルして戻る) 検証が無視されるようにするにはどうすればよいですか。現在はそうではありません。ここで、[戻る] または [保存] ボタンを押すと、必要なフィールドに正しい値 (idInputSubject) を入力しなかった場合、検証のメッセージが表示されます。

「戻る」ボタンと「保存」ボタンはどちらも同じ形式です。

<h:form id="idFormMeasureDetail" styleClass="bodyForm" prependId="false">
   ...
   <p:commandButton value="#{contentMB.msg.label_back.value}"
        action="#{chooseMeasureControllerMB.aSearch}"
        rendered="#{detailMeasureMB.navigation eq 0}" ajax="false"
        icon="ui-icon-arrowreturnthick-1-w"/>
   <p:commandButton value="#{contentMB.msg.button_save.value}" ajax="false" 
        icon="ui-icon-disk" actionListener="#{detailMeasureControllerMB.alApplyChanges}" 
                    title="#{contentMB.msg.tip_Apply.value}" />

   ...
   <p:inputTextarea id="idInputSubject" value="#{detailMeasureMB.measure.aufgabe}"
    readonly="#{!userSessionMB.supervisor and !detailMeasureMB.isCreator}"
    required="#{globalSessionMB.globalWebOptionsMap['MMRequiredSubject'].propvalue}"
            title="#{contentMB.msg.tip_Betreff.value}"
            autoResize="false" style="width:100%;" >
   </p:inputTextarea>
   <p:message id="inputSubjectMsg" for="idInputSubject" display="icon" />
   ...

</h:form>

ChooseMeasureControllerMB:

@ManagedBean(name = "chooseMeasureControllerMB")
@RequestScoped
public class ChooseMeasureControllerMB extends BaseMeasureControllerMB {
...
public String aSearch() {
            ...
    // navigate to target-page
    return "/pages/mm/showMeasuresList.xhtml?faces-redirect=true";
}
...
}
4

2 に答える 2

17

特定のボタンをクリックして検証を防止/スキップする場合は、使用します

immediate="true"その特定のボタンに

についての良い説明については、次のBalusCの回答immediate="true"を読んでください

そして、ここに imemdiate="true の仕組み" を示す素敵な図があります

于 2012-08-08T11:27:39.563 に答える
0

つまり、[戻る]ボタンをクリックすると、フォームが送信され、データが検証されます。これを防ぐには、ボタンを別のフォームに配置するか、ナビゲーションにJavaスクリプトを使用します。

一般に、操作をキャンセルする場合は、データが破棄されるため、データを送信する必要はありません。クライアント側のアクションを使用します。ナビゲーションには、<p:commandButton>またはを使用することもできると思います。<p:button>このように、フォームも送信されません。

于 2012-08-08T11:38:07.520 に答える