struts2 中关于 s:select 默认值设置问题

tuo_bing 2010-04-12 05:29:02

<s:select list="pairsList" name="favorableBean.roomTypeId" listKey="key" listValue="value" value="favorableBean.roomTypeId"></s:select>


pairsList 是一个 List集合 , favorableBean.roomTypeId 是 集合中的某一项,我想使 select 的默认选中 favorableBean.roomTypeId 这项 ,我在页面 用

<s:property value="favorableBean.roomTypeId"/>

可以得到默认的值 !

谢谢各位。。。
...全文
1508 33 打赏 收藏 转发到动态 举报
写回复
用AI写文章
33 条回复
切换为时间正序
请发表友善的回复…
发表回复
pktangshao 2012-03-27
  • 打赏
  • 举报
回复
非常感觉楼主及所有回答问题的朋友.最后要谢谢redlotus_lyn 他在20L贴出来的答案解决了问题
onlymilan 2010-05-12
  • 打赏
  • 举报
回复
<s:select list="pairsList" name="favorableBean.roomTypeId" listKey="key" listValue="value" headerKey="favorableBean.roomTypeId" headerValue=""></s:select>
torn212 2010-05-03
  • 打赏
  • 举报
回复
看一下 这个jsp生成的 java文件

_jspx_th_s_005fselect_005f0.setParent(null);
// /update.jsp(79,4) name = list type = java.lang.String reqTime = false required = true fragment = false deferredValue = false expectedTypeName = null deferredMethod = false methodSignature = null
_jspx_th_s_005fselect_005f0.setList("list");
// /update.jsp(79,4) name = name type = java.lang.String reqTime = false required = false fragment = false deferredValue = false expectedTypeName = null deferredMethod = false methodSignature = null
_jspx_th_s_005fselect_005f0.setName("classid");
// /update.jsp(79,4) name = listKey type = java.lang.String reqTime = false required = false fragment = false deferredValue = false expectedTypeName = null deferredMethod = false methodSignature = null
_jspx_th_s_005fselect_005f0.setListKey("id");
// /update.jsp(79,4) name = label type = java.lang.String reqTime = false required = false fragment = false deferredValue = false expectedTypeName = null deferredMethod = false methodSignature = null
_jspx_th_s_005fselect_005f0.setLabel("班级");
// /update.jsp(79,4) name = listValue type = java.lang.String reqTime = false required = false fragment = false deferredValue = false expectedTypeName = null deferredMethod = false methodSignature = null
_jspx_th_s_005fselect_005f0.setListValue("classname");
// /update.jsp(79,4) name = value type = java.lang.String reqTime = false required = false fragment = false deferredValue = false expectedTypeName = null deferredMethod = false methodSignature = null
_jspx_th_s_005fselect_005f0.setValue("%{id}");

_jspx_th_s_005fselect_005f0.setValue("%{id}");
最后setValue永远是双引号引起来的String
torn212 2010-05-03
  • 打赏
  • 举报
回复
你应该换个struts版本试试
redlotus_lyn 2010-04-13
  • 打赏
  • 举报
回复
<s:select list="pairsList" name="favorableBean.roomTypeId" listKey="key" listValue="value" value="3"></s:select>

<s:select list="pairsList" name="favorableBean.roomTypeId" listKey="key" listValue="value"></s:select>

看看以上是否可用。
wymaweiyue 2010-04-13
  • 打赏
  • 举报
回复
JSP:
<s:select list="pairsList" listKey="key" listValue="name" name="favorableBean.roomTypeId" value="favorableBean.roomTypeId"</s:select>

然后可在进入这个jsp的action中对favorableBean的roomTypeId设置初始值:favorableBean.setRoomTypeId("3");对favorableBean和roomTypeId有get方法就可以了。

希望能有所帮助。
wymaweiyue 2010-04-13
  • 打赏
  • 举报
回复
JSP:
<s:select list="pairsList" listKey="key" listValue="name" name="favorableBean.roomTypeId" value="favorableBean.roomTypeId"</s:select>

然后可在进入这个jsp的action中对favorableBean的roomTypeId设置初始值:favorableBean.setRoomTypeId("3");对favorableBean和roomTypeId有get方法就可以了。
justlearn 2010-04-13
  • 打赏
  • 举报
回复
如果再不行,我建议你把roomTypeId改成int的,PairsBean.key也改成int再试下
justlearn 2010-04-13
  • 打赏
  • 举报
回复
value="'%{favorableBean.roomTypeId}'">
加上单引号试试吧,我估计是类型转换问题,文档有提示,不过我没环境试
tuo_bing 2010-04-13
  • 打赏
  • 举报
回复
favorableBean.java

public class FavorableBean {
private int favorableId;
private Date inTime;
private Date outTime;
private String roomTypeId;
private int stayDay;
private String description;

//对应 get()/set() 方法
}

tuo_bing 2010-04-13
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 justlearn 的回复:]
把生成list的代码和favorableBean发上来看看吧。
记得文档提示 value内的值的类型也要和listKey中的一样
[/Quote]

PairsBean.java

public class PairsBean {
private String key;

private String value;

//下面是对应的 get()/set() 方法
}


pairsList赋值

/*
* 得到房间类型的 键 - 值 对
*/
public List<PairsBean> getRoomType(){
List<PairsBean> pairsList = new ArrayList<PairsBean>();
PairsBean pairs = null;
try{
if( null == conn || conn.isClosed() ){
conn = this.dataSource.getConnection();
}

String strsql = "select id,roomType from SYS_RoomType"; //id在数据库中是 int 类型

pstmt = conn.prepareStatement(strsql);
rs = pstmt.executeQuery();

while(rs.next()){
pairs = new PairsBean();
pairs.setKey(String.valueOf(rs.getInt("id")));
pairs.setValue(rs.getString("roomType"));

pairsList.add(pairs);
}

}catch(Exception ex){
ex.printStackTrace();
}finally{
this.closeAll(rs, pstmt, conn);
}

return pairsList;

}



转到 jsp 前的 Action


private List<PairsBean> pairsList ;

pairsList = this.favorableService.getRoomType();
for( PairsBean bean : pairsList){
System.out.println(bean.getKey() + " " + bean.getValue());
//这里可以得到值 key --- value
}
justlearn 2010-04-13
  • 打赏
  • 举报
回复
把生成list的代码和favorableBean发上来看看吧。
记得文档提示 value内的值的类型也要和listKey中的一样
tuo_bing 2010-04-13
  • 打赏
  • 举报
回复
listKey (key) listValue (value)
1 普通套间
2 商务套间
3 经济套间
4 豪华套间

<s:property value="favorableBean.roomTypeId"/> 在页面上得到的值为 3 ,但是 <s:select>
显示的确是 "普通套间"
justlearn 2010-04-13
  • 打赏
  • 举报
回复
[Quote=引用 28 楼 tuo_bing 的回复:]
谢谢各位的回答,我想是我这边的环境出了问题,以后碰到类似问题的朋友看了这个帖,应该可以找到解决方案。由于上面的方法我适应不了,因此用了以下方法暂时解决:

Java code

<select name="favorableBean.roomTypeId" >
<%for(PairsBean bean : list){%>
<option value="<%=bean.g……
[/Quote]
确实,从文档来看,6楼的方式应该是完全正确的
tuo_bing 2010-04-13
  • 打赏
  • 举报
回复
谢谢各位的回答,我想是我这边的环境出了问题,以后碰到类似问题的朋友看了这个帖,应该可以找到解决方案。由于上面的方法我适应不了,因此用了以下方法暂时解决:

<select name="favorableBean.roomTypeId" >
<%for(PairsBean bean : list){%>
<option value="<%=bean.getKey()%>"><%=bean.getValue()%></option>
<%} %>


页面加载的时候 ,得到 key

String roomItem = (String)request.getAttribute("roomItem");


用 js 设置 select 默认值 :

document.getElementById("favorableBean.roomTypeId").value=<%=roomItem%>;
justlearn 2010-04-13
  • 打赏
  • 举报
回复
java程序里 request.setAttribute("roomId",favorableBean.roomTypeId);

页面 value="%{#request.roomId}"

一种种方法试吧
tuo_bing 2010-04-13
  • 打赏
  • 举报
回复
[Quote=引用 25 楼 justlearn 的回复:]
value='<s:property value="favorableBean.roomTypeId"/>'
不晓得这样可以不可以
[/Quote]
谢谢你的回答,这个方法我开始试过了,没有效果,而且我还用了下面这种方法

<s:property id="room" value="favorableBean.roomTypeId"/>
<s:select list="pairsList" name="favorableBean.roomTypeId" listKey="key" listValue="value" value="%{#room}"></s:select>

还是只显示第一项
justlearn 2010-04-13
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 tuo_bing 的回复:]
listKey (key) listValue (value)
1 普通套间
2 商务套间
3 经济套间
4 豪华套间

<s:property value="favorableBean.roomTypeId"/> 在页面上得到的值为 3 ,但是 <s:select>
显示的确是 "普通套间"
[/Quote]

value='<s:property value="favorableBean.roomTypeId"/>'
不晓得这样可以不可以
tuo_bing 2010-04-13
  • 打赏
  • 举报
回复
name 属性是我需要的,因为这个页面是一个修改页面,页面提交的值,我要保存并提交

另外 通过 20L 的回复我有一个想法 就是在页面用

String roomItem = (String)request.getAttribute("roomItem");

得到 favorableBean.roomTypeId 的值 , 然后用 s:select 的 value ="<%=roomItem%>" 设置默认值,但是 提示 :attribute value does not accept any expressions
请问有办法解决吗 ?
justlearn 2010-04-13
  • 打赏
  • 举报
回复
把name属性去掉,或者改个值试试呢
加载更多回复(10)

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧