使用c:forEach模拟s:select标签

来源:互联网 发布:身份证照片识别软件 编辑:程序博客网 时间:2024/05/17 02:22

一、两种实现方式的效果图

二、关键部分的代码

Struts2方式

<s:select name="student.province" list="dictionary.provinceList" listKey="key" listValue="value"></s:select>

JSTL方式

<select name="student.province"><c:forEach items="${dictionary.provinceList }" var="list"><option value="${list.key }">${list.value }</option></c:forEach></select>

三、完整步骤

1.代码结构



(1)配置文件

web.xml,struts.xml

(2)相关jar包

位于目录WebRoot/WEB-INF/lib目录下

(3)后台代码 com.compname包

action部分:StudentAction.java

po部分:SelectData.java(存放单个下拉列表的键和值),Dictionary.java(将多个下拉列表封装到一个实体类中)

(4)前端页面相关

student_list.jsp,jquery-1.11.0.js

2.实现代码

(1)配置文件

web.xml

<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  <filter>  <filter-name>struts2</filter-name>  <filter-class>  org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter  </filter-class>  </filter>  <filter-mapping>  <filter-name>struts2</filter-name>  <url-pattern>/*</url-pattern>  </filter-mapping></web-app>
struts.xml
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"    "http://struts.apache.org/dtds/struts-2.0.dtd"><struts><constant name="struts.ui.theme" value="simple" /><package name="basicStruts" extends="struts-default" namespace="/studentMgmt"><action name="initQueryPage" class="com.compname.action.StudentAction"method="initQueryPage"><result name="success">/studentMgmt/student_list.jsp</result></action></package></struts>
(2)用到的jar包(需要Struts2和jstl的相应支持jar包)

(3)后台代码

StudentAction.java

package com.compname.action;import java.util.ArrayList;import java.util.List;import com.compname.po.Dictionary;import com.compname.po.SelectData;public class StudentAction {private Dictionarydictionary;/** * 初始化查询页面 *  * @return */public String initQueryPage() {dictionary = new Dictionary();List<SelectData> list = new ArrayList<SelectData>();list.add(new SelectData("1", "北京"));list.add(new SelectData("2", "上海"));list.add(new SelectData("3", "广州"));list.add(new SelectData("4", "深圳"));list.add(new SelectData("5", "河北"));list.add(new SelectData("6", "河南"));list.add(new SelectData("7", "山西"));list.add(new SelectData("8", "山东"));list.add(new SelectData("9", "江苏"));list.add(new SelectData("10", "浙江"));dictionary.setProvinceList(list);return "success";}public Dictionary getDictionary() {return dictionary;}public void setDictionary(Dictionary dictionary) {this.dictionary = dictionary;}}

SelectData.java

package com.compname.po;/** *  * @ClassName: SelectData * @Description: TODO(存放键值对) * @date 2017-10-26 下午10:47:36 */public class SelectData {private Stringkey;// 键private Stringvalue;// 值public SelectData(String key, String value) {super();this.key = key;this.value = value;}public String getKey() {return key;}public void setKey(String key) {this.key = key;}public String getValue() {return value;}public void setValue(String value) {this.value = value;}}
Dictionary.java

package com.compname.po;import java.util.ArrayList;import java.util.List;/** *  * @ClassName: Dictionary * @Description: TODO(用于存放所有的键值对数据) * @date 2017-10-26 下午10:47:36 */public class Dictionary {private transient List<SelectData>provinceList= new ArrayList<SelectData>();public List<SelectData> getProvinceList() {return provinceList;}public void setProvinceList(List<SelectData> provinceList) {this.provinceList = provinceList;}}
(4)前端页面相关

student_list.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%><%@ taglib uri="/struts-tags" prefix="s"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head><title>My JSP 'student_list.jsp' starting page</title><script type="text/javascript" src="<%=path%>/js/jquery/jquery-1.11.0.js"></script><style type="text/css">table tr td {border: 1px solid black;}</style>  </head>  <body>  <form action="">  <table>  <tr>  <td>struts2中的select标签</td>  <td>使用jstl中的foreach模拟实现strusts2中的select标签</td>  </tr>  <tr>  <td>  <s:select name="student.province" list="dictionary.provinceList" listKey="key" listValue="value"></s:select>  </td>  <td><select name="student.province"><c:forEach items="${dictionary.provinceList }" var="list"><option value="${list.key }">${list.value }</option></c:forEach></select>  </td>  </tr>  </table>  </form>  </body></html>

说明:如果不想在struts.xml中全局配置struts标签的样式(第6行)

<constant name="struts.ui.theme" value="simple" />
只需要将指定 前端页面student_list.jsp中的select标签

(第29行)

<s:select name="student.province" list="dictionary.provinceList" listKey="key" listValue="value"></s:select>

改成

<s:select name="student.province" list="dictionary.provinceList" listKey="key" listValue="value" theme="simple"></s:select>





原创粉丝点击