Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
页面加载时调用的PrimeFaces oncomplete backing方法_Primefaces_Jsf 2_Java Ee 7_Glassfish 4.1 - Fatal编程技术网

页面加载时调用的PrimeFaces oncomplete backing方法

页面加载时调用的PrimeFaces oncomplete backing方法,primefaces,jsf-2,java-ee-7,glassfish-4.1,Primefaces,Jsf 2,Java Ee 7,Glassfish 4.1,PrimeFaces 5.0, JSF2.2, 玻璃鱼4.1.1 我假设我的设置中有些东西配置不正确,但我不确定该看什么 所以我使用managedbeans来支持JSF页面。在页面上的PrimeFace元素中,如果使用oncomplete属性,则在页面加载时会调用它引用的方法。我不希望它在每次页面加载时调用该方法,我也不相信它应该这样做 我已经在几页和不同的元素中对此进行了测试。 我第一次注意到这个问题是在一个元素中,我试图在上传完所有文件后使用oncomplete调用一个方法。 我随后在上尝试

PrimeFaces 5.0, JSF2.2, 玻璃鱼4.1.1

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

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

我已经在几页和不同的元素中对此进行了测试。 我第一次注意到这个问题是在一个
元素中,我试图在上传完所有文件后使用oncomplete调用一个方法。 我随后在
上尝试了这一点,加载页面时会调用oncomplete

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

我还完成了对生成的HTML的区分,包括oncomplete属性和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'});
    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()方法被调用…

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


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

文档中的何处说明了“oncomplete”在“Executed”时能够调用java服务器端方法?按钮上尝试执行的操作可能重复,首先是actionListener,然后是action。对于你可以做的文件上传,或者有很多关于这个的“重复”,我甚至引用了。gopd的做法是将这个问题标记为重复问题,这样StackOverflow就不会被几乎相同的答案弄乱
<h:form enctype="multipart/form-data">
<p:fileUpload oncomplete="#{JSFManagedBean.extract()}" 
fileUploadListener="#{JSFManagedBean.handleTarFileUpload}" 
mode="advanced"  ></p:fileUpload>
</h:form>