我尝试使用selectOneMenu的onChange事件,但它不起作用,并且在我添加onChange attribue时所选择的数据不会重新加载表单。
有人能告诉我如何处理onChange事件?
以下是我的观点:
<p:panel id="cubeId" header="Cube" widgetVar="toggleable>
<h:form id="CubeIdForm">
<p:panelGrid columns="2">
<p:outputLabel value="Cube Name: "></p:outputLabel>
<p:inputText value="#{cubeMan.cub.name_cube}"></p:inputText>
<p:outputLabel value="Description: "></p:outputLabel>
<p:inputText value="#{cubeMan.cub.description_cube}"></p:inputText>
<p:outputLabel value="Caption: "></p:outputLabel>
<p:inputText value="#{cubeMan.cub.caption_cube}"></p:inputText>
<p:outputLabel value="Cache: "></p:outputLabel>
<p:selectBooleanCheckbox value="#{cubeMan.cub.cache}"></p:selectBooleanCheckbox>
<p:outputLabel value="Enabled : "></p:outputLabel>
<p:selectBooleanCheckbox value="#{cubeMan.cub.enabled}"
label="Activate Cube"></p:selectBooleanCheckbox>
<p:outputLabel value="Visible : "></p:outputLabel>
<p:selectBooleanCheckbox value="#{cubeMan.cub.visible}"></p:selectBooleanCheckbox>
<p:outputLabel value="Select Column: " />
<p:selectOneMenu value="#{cubeMan.name_cube}" id="cat">
<f:selectItem itemLabel="Select Column" itemValue="" />
<f:selectItems value="#{cubeMan.getColumnName()}" />
</p:selectOneMenu>
<p:outputLabel value="Select Cube: " />
<p:selectOneMenu value="#{cubeMan.name_cube}" id="cub">
<f:selectItem itemLabel="Select Cube" itemValue="" />
<f:selectItems value="#{cubeMan.AllCubs()}" />
<p:ajax event="change" listener="#{cubeMan.dUpdateCube}" update="@this" />
</p:selectOneMenu>
</p:panelGrid>
<p:commandButton value="Add" action="#{cubeMan.makeCube()}" update="@form">
<p:commandButton action="#{cubeMan.handleCube()}" /></p:commandButton>
</h:form>
</p:panel>
这是请求范围bean中的方法:
public void dUpdateCube(AjaxBehaviorEvent event){
cubeService.update_cube(cub);
}
public void handleCube() {
cubeService.update_cube(cub);
}
但是,当我更改菜单时,没有打印任何内容。
这是如何引起的?如何解决?
答案 0 :(得分:1)
我认为你在谈论selectOneMenu
和id="cub"
。
您必须更改update
- 元素的p:ajax
的值。使用您当前的设置无法更新。请尝试以下操作来更新整个表单:
<p:ajax event="change" listener="#{cubeMan.dUpdateCube}" update="@form" />
答案 1 :(得分:0)
我认为我应该有这样的事情:
<p:selectOneMenu id="sistema" label="Sistema" value="#{searchSchedulingBean.selectedSystem}">
<p:ajax listener="#{searchSchedulingBean.systemChangeListener}"
process="@this"
event="change"
update="autostrada"/>
<f:selectItems value="#{searchSchedulingBean.systemsList}" />
</p:selectOneMenu>
但是我不知道我应该为selectedSystem()
以及systemChangeListener()
的方法编码什么,所以你可以帮我编写这两种方法。