【问题标题】:<p:selectOneMenu> onChange event doesn't reload form<p:selectOneMenu> onChange 事件不会重新加载表单
【发布时间】:2014-06-30 12:33:23
【问题描述】:

我尝试使用 selectOneMenu 的 onChange 事件,但它不起作用,并且在我添加 onChange 属性时选择的数据不会重新加载表单。

谁能告诉我如何处理 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);
}

但是,当我更改菜单时,没有打印任何内容。

这是怎么引起的,我该如何解决?

【问题讨论】:

    标签: events jsf-2 primefaces onchange


    【解决方案1】:

    我认为您在谈论selectOneMenuid="cub"。 您必须更改p:ajax 元素的update 的值。使用您当前的设置,什么都不会更新。尝试以下方法来更新整个表单:

    <p:ajax event="change" listener="#{cubeMan.dUpdateCube}" update="@form" />
    

    【讨论】:

    • 当我们在 SelectIneMenu 中选择一个 selectItem 时,我无法创建一个可以重新加载表单的方法,你能给我一些例子吗
    • 真正的问题是我不确定“dUpdateCube”方法是否适合将选择对象重新加载到我的表单中
    • 对不起,我不明白你的问题到底是什么。
    • 我的问题是我有一个 AllCubs() 方法,它返回一个多维数据集(对象)列表,当我选择一个对象并选择它时,我认为我应该有其他方法获取该对象并在表单中重新加载它
    猜你喜欢
    • 1970-01-01
    • 2018-06-26
    • 2013-08-25
    • 1970-01-01
    • 1970-01-01
    • 2012-05-16
    • 1970-01-01
    • 2020-03-30
    • 1970-01-01
    相关资源
    最近更新 更多