3
4

3 に答える 3

2

コードサンプルを提供していないので、その中で a<h:form>と aを使用していると思います<h:commandButton>

もしそうなら、この問題を克服するために簡単なトリックを行う必要があります. <a4j:commandButton>your の代わりにa を使用し、を非表示<h:commandButton>にしておく必要があります<h:commandButton>。次に、 のoncompleteイベントを使用して、<a4j:commandButton>を実行するかどうかを決定しclickます<h:commandButton>

検証に合格した<h:commandButton場合にのみ、javascript によってクリックされます。

<h:form target="_blank">
  <h:inputText value="" required="true" id="txt"/>
  <rich:message for="txt"/>
  <a4j:commandButton value="Submit" action="#{bean.someMethod()}"           
    oncomplete="if(#{!(facesContext.maximumSeverity.ordinal ge 2)}){
    #{rich:element('btn')}.click();}"/>
  <h:commandButton value="temp" id="btn" style="display:none;"/>
</h:form>
于 2012-11-04T05:27:44.033 に答える
0

このスレッドに触発されて、問題の解決策を見つけました。だから私も投稿することにしました。エラーが発生した場合、および印刷用のページで新しいタブを開かない場合は、同じサイトにとどまる必要がありました。

<h:form target="#{printBean.isErrorHappened() ? '_self' : '_blank'}"
     id="formPrintSearchResult">
     <h:commandLink id="cmdLinkPrintSearchResult"
          value="Print overview"
          onmouseover="#{rich:element('checkForErrors')}.click();"
          action="#{printController.printSearch()}" />
      <a4j:commandLink id="checkForErrors" style="display:none;" 
          render="formPrintSearchResult" />
</h:form>   

必要に応じて、a4j:commandLink に別のアクションを含めて、エラーをチェックし、printBean に errorHappened を設定することもできます。

于 2013-05-29T08:37:03.343 に答える
0

AJAX の動作を使用して JavaScript を使用して検証を呼び出すことができる場合onSubmitは、次のようにイベント関数を使用して簡単に実行できる場合があります。

   function fnSubmit(){
     var validated= performValidation();
     if(validated){
         document.getElementById('formName').target="_blank";
         document.getElementById('formaName').submit();
     }
   }
于 2012-11-02T15:47:22.493 に答える