1

ページで[保存]をクリックしたときに検証を導入した後、何も起こりません。このページには「保存」と「キャンセル」があります。キャンセルボタンに「immediate=true」を設定すると、検証が実行されず、想定どおりに前のビューに戻ります。[保存]をクリックすると、検証が実行され、エラーが正しく表示されますが、データを処理して前のページに戻る代わりに、正しい入力を入力すると(検証でエラーが発生しないように)、何も起こりません。 ..。。

私は何かが恋しいですか?

ここにいくつかのコードスニペットがあります:

意見:

<f:metadata>
  <f:viewParam name="mode" value="#{roomDetailController.model.mode}"/>
  <f:viewParam name="dbId" value="#{roomDetailController.model.dbId}"/>

  <f:event listener="#{roomDetailController.processCommand}" type="preRenderView"/>
</f:metadata>

...

<tr>
  <td>
    <h:outputLabel value="#{msg.roomFormFieldRoomName}:"/>
  </td>
  <td>
    <h:inputText id="roomName" value="#{detailModel.afterObject.roomName}" disabled="#{detailModel.mode == detailModel.viewMode}">
      <f:validateBean/>
    </h:inputText>
    <h:message for="roomName" style="color:red"/><br/>
  </td>
</tr>
<tr>
  <td>
    <h:outputLabel value="#{msg.roomFormFieldRoomIPs}:"/>
  </td>
  <td>
    <h:inputText id="roomIPs" value="#{detailModel.afterObject.roomIPs}" disabled="#{detailModel.mode == detailModel.viewMode}">
      <f:validateBean/>
    </h:inputText>
    <h:message for="roomIPs" style="color:red"/><br/>
  </td>
</tr>

...

<!-- SUBMIT BUTTON -->
<h:commandButton
  styleClass     = "waiButton"
  value          = "#{commonButtonSubmit}"
  action         = "#{detailController.submitAction()}"
  rendered       = "#{detailModel.mode != detailModel.viewMode}"
/>

<!-- CANCEL BUTTON -->
<h:commandButton
  styleClass = "waiButton"
  value      = "#{commonButtonCancel}"
  action     = "#{detailController.cancelAction()}"
  immediate  = "true"
  rendered   = "#{detailModel.mode == detailModel.cancelMode or detailModel.mode == detailModel.editMode or detailModel.mode == detailModel.multiEditMode or detailModel.mode == detailModel.createMode}"
/>
...

コントローラ:

...
// Action: "submit" clicked
public String submitAction()
{
  detailModel.setCommand( DetailModel.Command.SUBMIT );
  return null;
}

// Action: "cancel" clicked
public String cancelAction()
{
  if ( detailModel.getEditMode().equals( detailModel.getMode() ) )
  {
    detailModel.setMode( detailModel.getViewMode() );
    return null;
  }
  else
  {
    // Multi Edit Mode
    return appendUrlParameter( getListViewName(), FACES_REDIRECT_TRUE );
  }
}
...

さらに情報が必要な場合は、私に知らせてください...

4

1 に答える 1

0

問題が解決しました。言ったように、それは検証とは何の関係もありませんでした。

于 2013-04-29T09:01:14.457 に答える