[Ajax4JSF] jsf页面<h:selectOneMenu>标签中使用<a4j:support>实现级联菜单问题。
m_isunshine
2008-07-19
下面是页面里的部分代码
<h:outputLabel value="上级单位:"></h:outputLabel> <h:selectOneMenu value="#{infoManageBean.deptValue}"> <a4j:support event="onchange" actionListener="#{infoManageBean.refreshSubDeptList}" reRder="subDeptSel"> </a4j:support> <f:selectItems value="#{infoManageBean.deptList}"/> </h:selectOneMenu> <h:outputLabel value="所属单位:"></h:outputLabel> <h:selectOneMenu value="#{infoManageBean.subDeptValue}"> <f:selectItem id="subDeptSel" value="#{infoManageBean.subDeptList}"/> </h:selectOneMenu> 这里是backing bean里面的响应事件的代码 public void refreshSubDeptList(ActionEvent e) throws ApplicationException { subDeptList = new HashMap(); StringBuffer filterString = new StringBuffer(" 1=1 "); filterString[color=darkred][/color].append(" AND PARENT_ID=").append(this.deptValue).append(" "); BizDataObjects bizDataObjects = bizDataObjectManager.getBizDataObjects(TABLE_NAME_DEPART, filterString.toString(), "ID"); List list = bizDataObjects.getBizDataObjectList(); for (int i = 0; i < list.size(); i++) { BizDataObject bizObject = (BizDataObject) list.get(i); subDeptList.put(bizObject.get("DEPT_NAME").toString(), bizObject.get("ID").toString());//Map实现 } } 代码目的:选择某“上级单位”后,“所属单位”显示“上级单位”的所有下级单位,也就是这里的所谓“所属单位”。 问题原因:进入该页面后,点选某一“上级单位”,debug代码发现第一次点选是可以走到refreshSubDeptList(),subDeptList也得到了更新,但是页面里“所属单位”选择项却没有得到更新。第二次点选“另一上级单位”后,debug发现不走refreshSubDeptList()方法,一直调用getSubDeptList(),因为使用了 <saveState>标签,一直保持第一次点选“上级单位”后的结果。 我的问题:是不是我的标签用的不对?还是event="onchange"这里响应事件不对? 另说明:subDeptList的获取肯定没有问题的。 不知道把问题说清楚了没有,刚开始使用jsf做项目,比较菜,先表示一下感谢! |
|
m_isunshine
2008-07-20
|
|
m_isunshine
2008-07-20
谁能给我指点一二?
|
|
guooo
2008-07-21
关注
|
|
wangwenpinghello
2008-07-21
所属单位没有更新,可能是你没有get,set方法,或是再哪个方法里给初始化了
为什么大家都喜欢用actionListener呢 <h:selectOneMenu value="#{dareportmanagebean.selectbigsortid}"> <f:selectItems value="#{dareportmanagebean.bigsorts}" /> <a4j:support event="onchange" action="#{dareportmanagebean.selectbigsortInput}" reRender="form1:kwlbs"></a4j:support> </h:selectOneMenu> <a4j:outputPanel id="kwlbs"> <h:selectOneMenu value="#{dareportmanagebean.selectsmallsortid}" id="kwlbsb"> <f:selectItems value="#{dareportmanagebean.smallsortss}" /> <a4j:support action="#{dareportmanagebean.changsmallportsb}" event="onchange" reRender="form1:period"></a4j:support> </h:selectOneMenu> </a4j:outputPanel> onchange事件没有错,按照我这样写,不会错 注意:1,a4j:support要用action, reRender要绘制的组建必须要用a4j:outputPanel,因为他在源代码中是<span>,一般我都这么用,可能用组建id也好使。 2,SelectItem构造里的参数应该是对象,其他的都照常对应后台的属性和方法就可以了 public void selectbigsortInput(){ try { Page p = theIDatareportManageService.getManDictionaryVO(this.selectbigsortid); if(p!=null){ List l = (List) p.getData(); if(l!=null&& l.size()>0){ smallsortss = new SelectItem[l.size()+1]; smallsortss[0] = new SelectItem("0","--请选择--"); for(int i=0; i<l.size();i++){ ManDictionaryVO m = (ManDictionaryVO) l.get(i); smallsortss[i+1] = new SelectItem(String.valueOf(m.getIordnum().intValue()),m.getSentname()); } }else{ smallsortss = new SelectItem[1]; smallsortss[0] = new SelectItem("0","--没有刊物类别--"); } } catch (FireDAOException e) { e.printStackTrace(); } } public SelectItem[] getSmallsortss() { return smallsortss; } public void setSmallsortss(SelectItem[] smallsortss) { this.smallsortss = smallsortss; } 其他属性方法和上面类似,省略了 |
|
yourenyouyu2008
2008-07-23
为什么不给actionListener绑定的方法加个参数呢,比如infoManageBean.refreshSubDeptList(上级),这样多简单呀。
|
|
m_isunshine
2008-07-24
to wangwenpinghello
感谢你的回答,今天晚上才看到,呵呵 按照你的方法我去试试,有问题再请教你。 |
|
maxwell
2008-09-04
<h:outputLabel value="上级单位:"></h:outputLabel>
<h:selectOneMenu value="#{infoManageBean.deptValue}"> <a4j:support event="onchange" actionListener="#{infoManageBean.refreshSubDeptList}" reRder="subDeptSel"> </a4j:support> <f:selectItems value="#{infoManageBean.deptList}"/> </h:selectOneMenu> <h:outputLabel value="所属单位:"></h:outputLabel> <h:selectOneMenu value="#{infoManageBean.subDeptValue}"> <f:selectItem id="subDeptSel" value="#{infoManageBean.subDeptList}"/> </h:selectOneMenu> |
|
maxwell
2008-09-04
应该是reRender=""
下面的id 不要放在 selectItem里 放在 selectOneMenu 那里 |
|
maxwell
2008-09-04
<h:outputLabel value="上级单位:"></h:outputLabel>
<h:selectOneMenu value="#{infoManageBean.deptValue}"> <a4j:support event="onchange" actionListener="#{infoManageBean.refreshSubDeptList}" reRender ="subDeptSel"> </a4j:support> <f:selectItems value="#{infoManageBean.deptList}"/> </h:selectOneMenu> <h:outputLabel value="所属单位:"></h:outputLabel> <h:selectOneMenu value="#{infoManageBean.subDeptValue}" id="subDeptSel"> <f:selectItem value="#{infoManageBean.subDeptList}"/> </h:selectOneMenu> |
相关讨论
相关资源推荐
- EXT2.0中文教程
- EXT2.0 Grid JSON问题
- Ext2.0框架的Grid使用介绍
- ext2.0所遇问题
- EXT2.0 简明教程(二)
- Ext Grid Json分页(asp.net)
- java ext pagesize_JSP+EXt2.0实现分页的方法
- ext2.0(使用表格控件Grid)(转)
- DCM与PFC融合的CRM混合模式创新实践,DCM CRM混合模式PFC ,DCM; CRM混合模式; PFC,DCM与PFC的混合模式在CRM系统中的应用
- 基于Dijkstra算法的路径规划Matlab代码:读取黑白色地图并实现图像上的路径规划示例,读取黑白色地图,在图片上进行路径规划matlab代码 路径规划算法基于读图识别的Dijkstra算法 随意