[Ajax4JSF] valueChangeListener有默认值时出问题了

ranyut 2009-08-17
<h:selectOneMenu
value="#{baseinfoBean.health.hr510100102}" valueChangeListener="#{baseinfoBean.resultCh}" >
<a4j:support event="onchange" reRender="jieguo" ajaxSingle="true" limitToList="true"  />
<f:selectItems value="#{baseinfoBean.itemTypelist}" />
</h:selectOneMenu>


<h:panelGrid id="jieguo">
<h:selectOneMenu value="#{baseinfoBean.health.hr510100107}" id="result"
rendered="#{!baseinfoBean.display&&!baseinfoBean.sugdisp9&&!baseinfoBean.sugdisp10}" >
<f:selectItems value="#{baseinfoBean.resultCodelist}" />
</h:selectOneMenu>


<h:inputText value="#{baseinfoBean.health.rsname}" rendered="#{baseinfoBean.display}"/></h:panelGrid >

[/html]

我想用值改变出现选择或者输入两种方式,
可是在出现在的输入框中但我输入了一个值后,关闭model再打开看时值就不见了,而后台是有值的,只是值不显示。为什么?
是不是 valueChangeListener 有初值时,不会执行 相关的changeEven 方法?
terryzhou 2009-08-17
写法有点混乱,建议你:
<h:selectOneMenu 
value="#{baseinfoBean.health.hr510100102}" valueChangeListener="#{baseinfoBean.resultCh}" > 
<a4j:support event="onchange" reRender="jieguo" ajaxSingle="true" limitToList="true"  /> 
<f:selectItems value="#{baseinfoBean.itemTypelist}" /> 
</h:selectOneMenu> 

改成:
<h:selectOneMenu 
value="#{baseinfoBean.health.hr510100102}"> 
<a4j:support event="onchange" actionListener="#{baseinfoBean.doChange}" reRender="jieguo" ajaxSingle="true" limitToList="true"  /> 
<f:selectItems value="#{baseinfoBean.itemTypelist}" /> 
</h:selectOneMenu> 


有了A4J,valueChangeListener就没啥意义//
ranyut 2009-08-17
问题是当查看一条数据的时候,上面baseinfoBean.health.hr510100102有值了,下面baseinfoBean.health.hr510100107baseinfoBean.health.rsname会不会跟着联动。
terryzhou 2009-08-18
baseinfoBean.health.hr510100102有没值不是重点,你该让控制下拉或输入框显示的变量(#{reRender})有值
ranyut 2009-08-18
rendered="#{baseinfoBean.display}" 这个当然有值了,也能正确的控制出现下拉或输入,只是当我保存以后再点开时,下拉或输入框中的值不见了,而后台打印该对象是有值的。
原因就是点进来时 value="#{baseinfoBean.health.hr510100102}"  有值,却没有去加载下面的下拉或输入中的值。
为什么不能?如果是该控件本身就不能在查看的时候根据上面的值动态下面的值的话,那它就失去了意义了嘛。。。
请指教!
terryzhou 2009-08-18
1.前面说你只是“关闭model再打开”,现在是"只是当我保存以后再点开时"。这两个是有区别的,“关闭model再打开”不会改变rendered="#{!baseinfoBean.display&&!baseinfoBean.sugdisp9&&!baseinfoBean.sugdisp10}" 和rendered="#{baseinfoBean.display}";
而如果是"只是当我保存以后再点开时",上面两个boolean值打印的是什么?
2.再说次:重新打开页面后,默认显示下拉还是输入和value="#{baseinfoBean.health.hr510100102}" 没关系。
Global site tag (gtag.js) - Google Analytics