Struts2本身提供了级联下拉选择框标签,这对简化诸如省份/城市这样的典型需求的操作是大有好处的,同时也有利于架构的统一,没有必要引入一大堆的javascript代码,使用方法如下:
1、Action层
DoubleListAction.java
package com.mobilesoft.esales.webapp.action;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import org.apache.log4j.Logger;
import com.mobilesoft.framework.tree.model.FileWrapper;
import com.mobilesoft.framework.tree.model.OssCategory;
import com.mobilesoft.framework.tree.service.TreeService;
public class DoubleListAction extends BaseAction {
/**
* Logger for this class
*/
private static final Logger logger = Logger.getLogger(DoubleListAction.class);
public String execute() {
Map map=new HashMap();
ArrayList list1=new ArrayList();
list1.add("11");
list1.add("12");
list1.add("13");
map.put("1", list1);
ArrayList list2=new ArrayList();
list2.add("21");
list2.add("22");
list2.add("23");
map.put("2", list2);
ArrayList list3=new ArrayList();
list3.add("31");
list3.add("32");
list3.add("33");
map.put("3", list3);
getRequest().setAttribute("map", map);
return SUCCESS;
}
public String doubleSelectTest(){
Map map=new HashMap();
ArrayList list1=new ArrayList();
list1.add("11");
list1.add("12");
list1.add("13");
map.put("1", list1);
ArrayList list2=new ArrayList();
list2.add("21");
list2.add("22");
list2.add("23");
map.put("2", list2);
ArrayList list3=new ArrayList();
list3.add("31");
list3.add("32");
list3.add("33");
map.put("3", list3);
getRequest().setAttribute("map", map);
return SUCCESS;
}
public String doubleSelectPost(){
Map map=getRequest().getParameterMap();
Set set=map.entrySet();
Iterator iterator=set.iterator();
while(iterator.hasNext()){
Map.Entry mapEntry=(Map.Entry)iterator.next();
logger.fatal("The key is: "+mapEntry.getKey()+",value is :"+mapEntry.getValue());
}
getRequest().setAttribute("map", map);
return SUCCESS;
}
}2、页面
doubleslect.jsp
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ page language="java" errorPage="/error.jsp" pageEncoding="GBK" contentType="text/html;charset=GBK" %>
<html>
<head>
<title>Struts 2 Cool Tags - <s:doubeselect/ ></title>
<s:head />
</head>
<body>
<h2>Doubleselect Tag Example</h2>
<s:form action="doubleSelectPost" name="form1">
Doubleselect演示1
<s:set name="technology"
value="#{
'Java': {'Spring', 'Hibernate', 'Struts 2'},
'.Net': {'Linq', ' ASP.NET 2.0'},
'Database': {'Oracle', 'SQL Server', 'DB2', 'MySQL'}
}" />
<s:doubleselect label="技术选择"
list="#technology.keySet()"
name="doubleselect1"
doubleName="techdetail"
formName="form1"
doubleList="#technology[top]" />
<br/><br/>
Doubleselect演示数据演示2:
<s:set name="mymap" value="#request.map"/>
<s:doubleselect list="#request.map.keySet()"
doubleName="mymap1"
name="doubleselect2"
formName="form1"
doubleList="#request.map[top]"
label="Map Test" />
<s:submit/>
</s:form>
</body>
</html>doubleselectpost.jsp
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ page language="java" errorPage="/error.jsp" pageEncoding="GBK" contentType="text/html;charset=GBK" %>
<html>
<head>
<title>Struts 2 Cool Tags - <s:doubeselect/ ></title>
<s:head />
</head>
<body>
<h2>Doubleselect Tag Example</h2>
<s:form name="form1">
<table border="0" cellspacing="0" cellpadding="1">
<tr>
<th>参数值</th>
</tr>
<s:iterator value="#request.map.keySet()" status="keys">
<tr>
<td><s:property/></td>
</tr>
</s:iterator>
</s:form>
</body>
</html>3、struts.xml配置文件
<action name="doubleSelectTest" method="doubleSelectTest" class="com.mobilesoft.esales.webapp.action.DoubleListAction">
<result name="success">test/doubleselect.jsp</result>
</action>
<action name="doubleSelectPost" method="doubleSelectPost" class="com.mobilesoft.esales.webapp.action.DoubleListAction">
<result name="success">test/doubleselectpost.jsp</result>
</action>4、级联下拉框间的换行<br >问题
缺省情况下,两个级联下拉框间是换行的,Struts2采用Freemarker来做模板,可以通过修改模板来定制标签缺省的树形。参看“Struts2中Datetimepicker控件的中文问题”中的方法,也即:
◦修改struts.mxl,增加如下内容。
<constant name=”struts.serve.static” value=”false” />
<constant name=”struts.ui.templateDir” value=”struts” />
注意在struts2-core-2.0.11.jar/org/apache/struts2/default.properties中有几个与Freemarker对应的配置参数:
struts.ui.theme=xhtml
struts.ui.templateDir=template
#sets the default template type. Either ftl, vm, or jsp
struts.ui.templateSuffix=ftl
◦覆盖缺省的静态文件
在resource目录(与WEB-INF同级或WEB-INF下)创建struts目录,并:
解压struts2-core-2.0.11.jar:/org/apache/struts2/static/ to /struts/
解压struts2-core-2.0.11.jar:/template/simple/ to /struts/simple/
解压struts2-core-2.0.11.jar:/template/xhtml/ to /struts/xhtml/
解压struts2-core-2.0.11.jar:/template/css_xhtml/ to /struts/css_xhtml/
解压struts2-core-2.0.11.jar:/template/ajax/ to /struts/ajax/
解压struts2-core-2.0.11.jar:/template/archive/ to /struts/archive
最后的目录结构如下:
struts/
- ajax/
- archive/
- css_xhtml/
- dojo/
- nls/
- src/
- animation/
- …
- xml/
- struts/
- widget/
- widgets/
- niftycorners/
- simple/
- xhtml/
◦修改doubleselect的模板doubleselect.ftl
修改struts/simple/doubleselect.ftl去除其中的<br />
分享到:
相关推荐
在"struts2 doubleselect标签的用法例子"中,我们将探讨如何实现这个功能。首先,我们需要理解`doubleselect`标签的基本结构和属性。`doubleselect`标签通常包含两个部分:父级选择器和子级选择器,它们之间的关联...
在本篇文章中,我们将深入探讨Struts2框架中的`doubleselect`标签的使用方法,并结合一个具体的示例来展示如何将此标签与Hibernate和Spring框架整合在一起,以便于更好地理解和运用这一技术。 ### Struts2框架简介 ...
`doubleselect`标签是Struts2提供的一个特殊标签,用于创建具有两个级联选择框的用户界面,通常用于父类别与子类别之间的关联选择,如在上述例子中的部门与人员选择。 在`doubleselect`标签中,`list`属性用于指定...
Struts2 Doubleselect标签是用于创建二级联动下拉列表的,这种控件在网页表单中常见于需要显示层次关系数据的场景,例如省份-城市的选择。Doubleselect标签结合了两个下拉列表,其中一个的选择会影响到另一个下拉...
`doubleselect`标签是Struts2自定义标签库的一部分,它允许开发者创建两个相关的下拉列表,当用户在第一个下拉框选择一个选项时,第二个下拉框的内容会相应地更新。这种联动效果能够提高用户界面的交互性和用户体验...
在Struts2中,我们有许多内置的标签来帮助开发者更方便地处理表单元素,例如`<s:select>`和`<s:doubleselect>`就是其中两个用于创建下拉列表的标签。下面我们将详细探讨这两个标签以及如何在J2EE项目中使用它们。 1...
3. **ValueStack**:Struts2使用ValueStack来存储Action对象和其他值,使得在JSP页面可以直接通过OGNL(Object-Graph Navigation Language)表达式访问这些对象和值。 4. **OGNL表达式**:在JSP页面中,我们可以...
### Struts2中的DoubleSelect标签的用法 在Struts2框架中,`doubleSelect`标签是一种非常实用的工具,它允许用户在一个页面上通过两次选择来完成复杂的数据关联操作。这种标签尤其适用于多级菜单或者层级关系的选择...
3. **ValueStack**:Struts2使用ValueStack来存储Action和模型对象,使得视图可以直接访问这些对象的属性,方便数据传递。 4. **Interceptor拦截器**:在Struts2中,Interceptor用于在Action执行前后插入额外的逻辑...
3. **创建JSP页面**:创建一个JSP页面(如double_select.jsp),使用Struts2的标签库来渲染表单。包括两个`<s:select>`标签,一个用于父级,一个用于子级。例如: ```jsp <s:form action="doubleSelect"> 请选择....
Struts2 标签列表及说明 Struts2 是一个基于 Java 语言的 Web 应用程序 Framework,它提供了许多标签来帮助开发者快速构建 Web 应用程序。下面是 Struts2 的标签列表及说明: A: * <s:a>:超链接,类似于 HTML ...
### Struts2标签详解及具体实例解析 #### 一、概述 Struts2是一个基于MVC模式的开源框架,它提供了丰富的标签库来简化Web应用的开发过程。这些标签不仅功能强大,而且易于使用,可以帮助开发者快速构建动态网页。...
doubleselect标签:生成一个相互关联的列表框,该标签由两个下拉选择框组成。 datetimepicker标签:生成一个日期、时间下拉列表框。 head标签:生成HTML页面的HEAD部分。 file标签:在页面上生成一个上传文件元素...
标题和描述中提到的知识点是关于Struts 2框架中的标签库使用,特别是与JSP相关的部分。Struts 2框架是一种基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架,用于构建动态、可扩展的Web应用。其标签...
1. `s:a` 标签:这是Struts 2的Action标签,用于定义一个链接或者按钮,它可以触发一个Action调用,通常与`action`属性一起使用,指定要调用的Action名称。 2. `s:actionerror` 和 `s:actionmessage` 标签:这两个...
Struts2是一个强大的MVC框架,它提供了丰富的标签库,使得开发者可以更加便捷地构建动态网页。以下是对Struts2中一些常用标签的详细说明: 1. `<s:a>`:这是一个超链接标签,用于创建HTML的`<a>`标签。通过指定`...
在本文中,我们将深入探讨Struts2的标签体系,包括它们的功能、分类和使用方法。 首先,理解Struts2的作用至关重要。Struts2标签库为开发者提供了丰富的组件和模板支持,使得在页面上创建交互式用户界面变得简单。...
在Struts2中,所有的标签都统一在`<s>`前缀下,通过引入`<%@ taglib prefix="s" uri="/struts-tags" %>`就可以在页面上使用这些标签。 **A组标签:** 1. `<s:a>` - 用于创建超链接,与HTML的`<a>`标签类似,可以...
总的来说,Struts2标签库是其强大功能的核心,通过使用这些标签,开发者可以更专注于业务逻辑,而不是繁琐的视图层编码,从而提高开发效率和代码质量。理解并熟练掌握Struts2标签的使用,对于Java Web开发人员来说至...