某些情况下,在开发jsf项目时,我们需要必须使用html组件来达到一些使用Jsf组件不能达到的目标。例如有时候我们希望,当触发某些html 组件或标签时,触发后台方法甚至接收后台方法传过来的返回值。这回让我们很头疼,因为primefaces并没有给我们说如何使用js来调用后台bean 方法。那么,我们就需要结合js和jsf同时才可以达到这个目的。
达到这个目的又两个方法。
1 使用jsf的inputHidden标签
这几乎算不上真正的js调用后台的方法,因为它无法向后抬bean传递值,但是简单的后台向页面传递数据可以使用这个方法
<h:inputHidden id="input" value="#{advancedQueryManager.aliaColums}"></h:inputHidden>
首先,在jsf中触发某个组件时,要及时update这个inputHidden标签,例如下面的组件
<p:selectOneMenu id="module" value="#{advancedQueryManager.selectedModule}"> <f:selectItem itemLabel="----" itemValue="" /> <f:selectItems value="#{advancedQueryManager.allModule}" /> <p:ajax event="change" update="input" oncomplete="getVlue()" listener="#{advancedQueryManager.onModuleChange()}"></p:ajax></p:selectOneMenu>
这里面的组件就会当这个下拉值变化时,就会触发后台的方法
onModuleChange()
当,方法结束后,它会update(刷新)这个
h:inputHidden
如果你的这个inputHidden中的值是随下拉的变化和变化的呢,那么