求jsp中OGNL表达式,select标签的用法

action中有一个属性String:pname.application中有一个List<String>:pnames.想要实现的功能:在jsp页面中用select标签显... action中有一个属性String:pname.
application 中有一个List<String>:pnames.
想要实现的功能:
在jsp页面中用select标签显示panmes中的所有内容,默认选择与pname相等的那个。
我开始用java代码
<select name="pname">
<%
List<String> pnames = (List<String>)application.getAttribute("pnames");
for(String name:pnames){
String flag = "";
[color=#FF0000]if(name.equals(<s:property value="pname">)){[/color]
flag = "selected";
}
%>
<option value="<%= name %>" <%= flag %>><%= name %></option>
<%
}
%>
</select>

但这是不行的,java代码中不能混入struts2标签(红色部分),而且即使可用逻辑上也不合理。
求用OGNL实现上述功能,请高人指点。
展开
 我来答
盛衍无轩
推荐于2016-11-21 · TA获得超过364个赞
知道答主
回答量:55
采纳率:86%
帮助的人:19.7万
展开全部
终于解决你的问题了。因为OGNL和JSTL表达式不能嵌套使用,我的解决方法是使用JSP的自定义标签。下面是我自己写的JSP标签代码(放在/WEB-INF/tags目录下):

<%@ tag pageEncoding="UTF-8"%>
<%@ attribute name="username"%>
<%@ attribute name="name1"%>

<%
String str="SELECTED";
String username=(String)request.getAttribute("username");
String name1=(String)request.getAttribute("name1");
if(username.equals(name1)){
%>
<%out.print(str);%>
<%}%>

下面是测试页面的代码:
<%@ page language="java" contentType="text/html; charset=GBK"%>
<!-- 引入自定义标签和struts2标签 -->
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ taglib prefix="tags" tagdir="/WEB-INF/tags"%>

主体代码为:
<select name="pname">
<s:iterator value="#attr.pnames" status="st" id="name1">
<option <tags:iterator username="${username}" name1="${name1}"/>
value=<s:property value="#st.count" />>
<s:property value="name1" />
</option>
</s:iterator>
</select>

属性名我用的username即是你说的在后台定义pname。下面是我测试结果的页面代码:
<html>
<head>
<title>欢迎</title>
</head>
<body>
<select name="pname">
<option value=1>
qqq
</option>
<option value=2>
aaaaaaa
</option>
<option value=3>
bbbbbbb
</option>
<option SELECTED value=4>
ddddddd
</option>
<option value=5>
ccccccc
</option>
</select>
</body>
</html>
上面实现在IE6中测试成功,但是在Firefox中测试不成功,页面代码依然是上面代码,但是firefox不自动选择默认项
百度网友7e86e9f7b4
2011-04-25 · TA获得超过795个赞
知道小有建树答主
回答量:279
采纳率:0%
帮助的人:184万
展开全部
select标签
生成HTML 下拉选框
属性 数据类型 描述
list 集合 为下拉选项提供数据
listKey String 集合中元素Bean的属性用于选项的value
listValue String 集合中元素Bean的属性用于选项的文本
multiple Boolean 是否多选
size String 显示条数
<s:select name="pname" list="${pnames}" listKey="pname" listValue="pname" ></s:select>
追问
$是EL表达式,根本不对。struts标签当中怎么能这么写!语法都不通过
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
婷小二
2011-04-28
知道答主
回答量:49
采纳率:0%
帮助的人:14.1万
展开全部
我只在struts2中用过ognl表达式!
追问
这个方案我一开始采用的,之所以有这个提问就是不想把pname放在request里或session里。不过你这么辛苦,分给你吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式