java -
送信して検証した後、結果を含む新しいタブを開くフォームが必要です。メソッドを使用し<h:form target="_blank"
て新しいタブを取得しましたが、新しいタブに検証エラーが表示されます。検証に合格した場合にのみ、新しいタブを開くようにします。
私の推測では、唯一の本当のクロス ブラウザー
3603 次
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 に答える
送信して検証した後、結果を含む新しいタブを開くフォームが必要です。メソッドを使用し<h:form target="_blank"
て新しいタブを取得しましたが、新しいタブに検証エラーが表示されます。検証に合格した場合にのみ、新しいタブを開くようにします。
私の推測では、唯一の本当のクロス ブラウザー
3 に答える
コードサンプルを提供していないので、その中で 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>
このスレッドに触発されて、問題の解決策を見つけました。だから私も投稿することにしました。エラーが発生した場合、および印刷用のページで新しいタブを開かない場合は、同じサイトにとどまる必要がありました。
<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 を設定することもできます。
AJAX の動作を使用して JavaScript を使用して検証を呼び出すことができる場合onSubmit
は、次のようにイベント関数を使用して簡単に実行できる場合があります。
function fnSubmit(){
var validated= performValidation();
if(validated){
document.getElementById('formName').target="_blank";
document.getElementById('formaName').submit();
}
}