【问题标题】:PrimeFaces oncomplete backing method called on page load页面加载时调用的 PrimeFaces oncomplete 支持方法
【发布时间】:2017-10-03 23:45:14
【问题描述】:

PrimeFaces 5.0, JSF 2.2, Glassfish 4.1.1,

我假设我的设置中的某些内容配置不正确,但我不确定要查看什么...

所以我使用 managedbeans 来支持 JSF 页面。如果我使用 oncomplete 属性,则在页面上的 PrimeFace 元素中,它引用的方法会在页面加载时调用。我不希望它在每个页面加载时调用该方法,我不相信它应该是!

我已经通过几个页面和不同的元素对此进行了测试。 我首先注意到<p:fileupload> 元素的这个问题,我试图在所有文件上传后使用oncomplete 调用方法。 我随后在<p:commandbuttons> 上尝试了这个,并且在页面加载时调用了 oncomplete。

我检查了生成的 HTML,并且有一个格式正确的 <head> 标记对。

我还完成了对生成的 HTML 的比较,无论是否存在 oncomplete 属性。

与:

<button id="j_idt21:j_idt26" 
    name="j_idt21:j_idt26" 
    class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only"
    onclick="PrimeFaces.ab({s:'j_idt21:j_idt26',onco:function(xhr,status,args){;}});
    return false;" 
    type="submit">`

没有:

<button id="j_idt21:j_idt26" 
    name="j_idt21:j_idt26" 
    class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" 
    onclick="PrimeFaces.ab({s:'j_idt21:j_idt26'});
    return false;" 
    type="submit">

这里是上述 HTML 的代码,显示 oncomplete 在加载时调用任何页面上的方法。这是我的登录页面。

<p:commandButton validateClient="true" value="Login" 
    action="#{loginJSFManagedBean.validateCredentials}" 
    type="submit" 
    ajax="true" 
    oncomplete="#{loginJSFManagedBean.validateCredentials}">
</p:commandButton>

每次加载登录页面时都会调用 validateCredentials 方法,甚至在页面完成渲染之前...

这是我上传文件的 JSF 的 sn-p:

<h:form enctype="multipart/form-data">
<p:fileUpload oncomplete="#{JSFManagedBean.extract()}" 
fileUploadListener="#{JSFManagedBean.handleTarFileUpload}" 
mode="advanced"  ></p:fileUpload>
</h:form>

每次页面加载时都会调用 extract() 方法...

【问题讨论】:

标签: primefaces jsf-2 java-ee-7 glassfish-4.1


【解决方案1】:

oncomplete 是一个客户端 javascript 回调。当页面被渲染时,你的方法会被调用,因为服务器会评估那些 EL 表达式,期望它们产生带有 javascript 代码的字符串来发送。

您可能根本不需要这些 oncomplete 处理程序。对于登录按钮,动作处理程序就足够了。对于 fileUpload,如果您的目标只是按照方法名称的建议“提取”上传的文件,则 fileUploadListener 可能就足够了。

【讨论】:

  • 关于这个有很多“重复”,我什至提到过。 gopd 的做法是将此问题标记为重复,这样 StackOverflow 就不会出现几乎相同的答案
猜你喜欢
  • 2023-03-23
  • 2012-08-03
  • 2019-10-03
  • 2020-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-10
相关资源
最近更新 更多