java - <h :form target ="_blank" only after validation

标签 java jsf

我想要一个表单,在提交和验证后打开一个包含结果的新选项卡。我用了 <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/

相关文章:

jquery - 刷新 Jquery 对话框内容 + JSF

jsf - h:outputLabel及其 “for”属性的用途

javascript - 使用 Primefaces JavaScript 在服务器上的 bean 上调用 JSF 方法

java - 如何在 JSF 中使用 Facelets 创建左侧导航 Pane ?

Java ... 运算符

java - 将 View 平移到屏幕边界之外并将其动画回来

java - 用于比较两个空对象的 junit 测试用例

指向错误位置的 java -version 命令

java - 停止 hiveserver2 的正确方法是什么?

javascript - <p :selectCheckboxMenu is not fired when selecting all 中的 onchange 事件