求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实现上述功能,请高人指点。 展开
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实现上述功能,请高人指点。 展开
3个回答
展开全部
终于解决你的问题了。因为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不自动选择默认项
<%@ 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不自动选择默认项
展开全部
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>
生成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标签当中怎么能这么写!语法都不通过
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我只在struts2中用过ognl表达式!
追问
这个方案我一开始采用的,之所以有这个提问就是不想把pname放在request里或session里。不过你这么辛苦,分给你吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询