当前位置: 首页 > 知识库问答 >
问题:

PrimeFaces在页面加载时调用完整的支持方法

赏星河
2023-03-14

PrimeFaces 5.0、JSF 2.2、Glassfish 4.1.1、,

我假设我的设置中有些东西没有正确配置,但我不确定该看什么。。。

所以我使用managedbeans来支持JSF页面。在页面上的PrimeFace元素中,如果我使用oncomplete属性,它引用的方法将在页面加载时被调用。我不想让它在每次加载页面时调用这个方法,我也不认为应该这样!

我已经在几页和不同的元素中对此进行了测试。我第一次注意到这个问题时使用了

我已经检查了生成的HTML,并且有一个格式正确的

我还完成了对生成的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片段:

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

每次页面加载时,extract()方法被调用。。。


共有1个答案

杭涵映
2023-03-14

oncomplete是客户端javascript回调。当呈现页面时,会调用您的方法,因为服务器会计算那些EL表达式,希望它们生成包含要发送的javascript代码的字符串。

您可能根本不需要这些非完整处理程序。对于登录按钮,操作处理程序应该足够了。对于fileUpload,如果您的目标只是按照方法名称“提取”上传的文件,那么fileUploadListener就足够了。

 类似资料:
  • 我想在primeface可数据延迟加载完成后更新后备bean。我看到API有一个成功 我本可以使用监听器,但问题是监听器甚至在服务器端加载方法完成之前就被调用了。

  • 参考这里的帖子中给出的建议,我尝试使用实时滚动实现惰性加载来处理大型数据集,但实时滚动不会发生,当可数据的行和scrollRow属性都used.If我删除行属性,然后没有记录displayed.Here是我的代码片段,我tried.Can如果我做错了什么,请有人帮我。 JSF 代码片段 受管bean 刀类 } 懒惰数据模型类

  • 让我给你一个关于系统如何工作的想法。 我使用JAAS登录模块进行登录和角色管理。我可以根据我的角色访问特定页面。 我在地址栏中输入我的url,点击回车键。 登录页面出现,正确登录后,它会将我重定向到正确的页面(现在我们称之为page1.jsf)。 我想在页面加载时调用服务器端方法。 你能帮我吗? **编辑** 假设我必须访问第1页。jsf,仅角色1可访问。 在地址栏中,我输入http://loca

  • 问题内容: 我希望在发出ajax调用以更新数据库之前完全加载页面。我可以在body onload事件中调用javascript函数,以使页面完全加载,但是我不确定如何从那里触发Ajax调用。是否有更好的方法来实现此目的(页面加载后,Upadating数据库)? 问题答案: 使用JavaScript库确实很容易,例如使用jQuery,您可以编写: 如果没有jQuery,最简单的版本可能如下所示,但它

  • 我想在加载aboutme时调用servlet GetUserData。jsp页面。 基本上,它所做的是设置一个会话变量,允许用户查看其配置文件信息。 它设置了一个会话变量,因此它不需要调用任何东西,只需在页面加载时继续使用servlet。 这个servlet调用另一种方法来生成SQL语句并准备要发送的数据。 最后,在JSP页面上,我想使用先前声明的会话变量将所有信息(如登录名、密码等)打印到表中。