Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.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
Jsf h:SelectOne菜单标签在a4j重新渲染器上未更改_Jsf_Richfaces_Seam_Rerender - Fatal编程技术网

Jsf h:SelectOne菜单标签在a4j重新渲染器上未更改

Jsf h:SelectOne菜单标签在a4j重新渲染器上未更改,jsf,richfaces,seam,rerender,Jsf,Richfaces,Seam,Rerender,我有一个h:SelectOne菜单设置,看起来像这样: <f:view> <h:form id="tehForm"> <h2>Header</h2><br/> <a4j:outputPanel id="msgPanel" ajaxRendered="true"> <h:messages styleClass="message"/> &

我有一个h:SelectOne菜单设置,看起来像这样:

<f:view>
    <h:form id="tehForm">
        <h2>Header</h2><br/>
        <a4j:outputPanel id="msgPanel" ajaxRendered="true">
            <h:messages styleClass="message"/>
        </a4j:outputPanel>
        <a4j:outputPanel id="mainPanel" ajaxRendered="true"><br/>
            Select an item:<br/>
            <h:selectOneMenu id="itemMenu" value="#{bean.itemId}">
                <f:selectItem itemValue="-1" itemLabel="Please Select..."/>
                <s:selectItems value="#{bean.item}" itemValue="#{item.id}" var="item" label="#{item.name}"/>
                <a4j:support event="onchange" action="#{bean.selectItem}"/>
            </h:selectOneMenu>
            <rich:spacer width="10px"/>
            <a4j:commandLink value="Create New" action="#{bean.createNew}"
                             rendered="#{bean.selectedItemId != 0}"/>
            <h:outputText rendered="#{bean.selectedItemId gt -1}" value="Item Name:  "/><br/>
            <h:inputText rendered="#{bean.selectedItemId gt -1}" value="#{bean.selectedItem.name}" maxlength="50" size="75"/><br/><br/>
            <a4j:commandButton value="Save New" action="#{bean.save}" rendered="#{bean.selectedItemId == 0}"/>
            <a4j:commandButton value="Save Changes" action="#{bean.save}" rendered="#{bean.selectedItemId gt 0}" oncomplete="jsRerender();" />
            <a4j:jsFunction name="jsRerender" rerender="mainPanel"/>
        </a4j:outputPanel>
    </h:form>
</f:view>

标题

选择一个项目:



创建新项时,新项确实会显示在下拉列表中,但是如果我更改了项的“name”属性并保存,则标签直到下一个请求之后才更改为新名称,尽管bean中的数据已经更改

所以我通过在保存更改完成后再次调用rerender来解决这个问题。问题是,这会重新启动messages面板,所以我会取消显示的所有消息。在
a4j:jsFunction
中使用
limitToList=“true”
与不调用它具有相同的效果


我需要建议;重新渲染器功能的新目标,或解决问题的另一种方法。提前谢谢

尝试删除
oncomplete
javascript并使用
reRender=“mainPanel”



在您的版本中,我认为不带重新渲染属性的“保存更改”按钮将重新渲染所有页面,从而刷新消息。

尝试删除
oncomplete
javascript并使用
reRender=“mainPanel”



在您的版本中,我认为不带重新渲染属性的“保存更改”按钮将重新渲染所有页面,从而刷新消息。

这是无法正确刷新下拉列表的代码。oncomplete JSF函数是一个解决方案,这是一段不能正确刷新下拉列表的代码。oncomplete JSF函数是一个解决方案。
<a4j:commandButton value="Save Changes" 
                   action="#{bean.save}" 
                   rendered="#{bean.selectedItemId gt 0}"
                   reRender="mainPanel" />