我想要一个表单,在提交和验证后打开一个包含结果的新选项卡。我用了 <h:form target="_blank"
获取新选项卡的方法,但它在新选项卡中显示验证错误。我希望它仅在验证通过后才打开新选项卡。
我的猜测是唯一真正的跨浏览器解决方案是在提交时做一些 SJAX 验证,但我不确定是否有任何库可以为我做这件事。
那么有没有办法验证通过才打开新窗口呢?
最佳答案
由于您没有提供任何代码示例,我假设您使用的是 <h:form>
和一个 <h:commandButton>
在里面。
如果是这样,您必须使用一个简单的技巧来解决这个问题。你必须使用 <a4j:commandButton>
而不是你的 <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>
关于java - <h :form target ="_blank" only after validation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13198487/