【问题标题】:Problem with submitting form in JSF+PrimeFaces after using widgetvar使用 widgetvar 后在 JSF+PrimeFaces 中提交表单的问题
【发布时间】:2019-02-21 01:32:02
【问题描述】:

我正在使用 widgetVar 在某些事件上通过 javascript 启用命令按钮。但是,启用命令按钮后,当我单击按钮时,不会提交表单并且不会在服务器端调用操作。

如果我不使用 widgetVar 并默认启用按钮,则相同的设置可以正常工作。它提交函数,调用动作并显示结果。

仅供参考,我正在使用 ajax 调用。

<p:commandButton id="btnSearch" value="Search" disabled="true"
    widgetVar="searchButton"
    ajax="true"
    action="#{someBean.someFunction(someBean.firstName, someBean.lastName)}">
    <p:ajax
        execute="firstName lastName"
        render="tabViewId:resultsDataTableId"
        onsuccess="showSearchResults()"/>
</p:commandButton>

Javascript -

function onSomeEvent(){
    PF('searchButton').enable();
}

请指教。

【问题讨论】:

    标签: jsf primefaces


    【解决方案1】:

    如果您在浏览器中调试网络选项卡,那么当按钮启用时,您可能会看到网络流量(另一方面,您可能不会,但您应该检查一下)。所以这意味着向服务器的提交实际上正在发生,它只是没有被处理。这是为什么呢?

    这是设计使然,并且是 JSF 的原生功能,可防止客户端篡改表单/数据/...其他现代(阅读炒作)客户端 javascript 框架需要额外的 OWASP 保护来实现相同JSF 具有的安全级别。所以如果你想从客户端启用一个按钮,你应该做一个 ajax 调用来更新按钮的状态(并检查是否允许客户端这样做)。或者您可以默认启用它,并使用一些 javascript 最初禁用它。我个人会选择前者。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多