【问题标题】:How do i invoke a java script function when clicking on command button in prime faces单击主要面孔中的命令按钮时如何调用javascript函数
【发布时间】:2012-03-27 16:06:41
【问题描述】:

我的要求是使用 java 脚本函数验证 Ui 组件值。一旦验证成功,我想调用支持 bean 方法。我怎样才能使用 primefaces 2.2 和 java 脚本来满足这个要求。这是我正在使用的示例代码:

<p:commandButton id="saveButton" value="#{msgs['button.save.label']}"
    image="ui-icon #{msgs['button.save.icon.class']}" 
    actionListener="#{testBean.saveValues}"/>

【问题讨论】:

  • 为什么是javascript?验证是内置的,对于交叉验证,有一种解决方法。 Cross validation
  • 不知何故 jsf 消息未显示在 primefaces 对话窗口中。我不确定,2.2版本是否有任何错误。
  • 通过 JavaScript 进行验证而不是使用 JSF 内置验证是一个非常糟糕的主意。你需要问一个问题如何解决真正的问题,而不是问如何让黑客/解决方法发挥作用。

标签: javascript jsf-2 primefaces


【解决方案1】:

如果你想阻止你的 actionListener 被执行,只需在按钮的 js 函数中返回 false

这个按钮不会执行actionListener

<p:commandButton id="saveButton" value="#{msgs['button.save.label']}"
image="ui-icon #{msgs['button.save.icon.class']}" 
actionListener="#{testBean.saveValues}" onclick="return false;"/>

这将...

    <p:commandButton id="saveButton" value="#{msgs['button.save.label']}"
image="ui-icon #{msgs['button.save.icon.class']}" 
actionListener="#{testBean.saveValues}" onclick="return true;"/>

而不是硬编码onclick调用你的js函数onclick=myJsValidation()这一切都取决于js函数的返回值

【讨论】:

    【解决方案2】:

    如果您的 saveValues 出错:

    FacesContext.getCurrentInstance().addMessage("ERROR_MESSAGE", new FacesMessage(FacesMessage.SEVERITY_INFO, "Error Message", "Error Message"));
    

    在您的 xhtml 中,为 commandButton 添加更新属性:

    <p:growl id="growl_ID"/>
    <p:commandButton value="Save" actionListener="#{testBean.saveValues}" update="growl_ID"/>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-11
      • 2020-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-17
      相关资源
      最近更新 更多