Struts2 <s:generator>标记用于基于在页中提供“val”属性,以产生一个迭代。这里创建一个Web工程:struts2generatortag,来演示在多个复选框如何设置的默认值,整个项目的结构如下图所示:
在本教程中,将使用Struts2 <s:generator>标签来执行以下任务:
-
使用generator标签来创建生成迭代器。
-
使用<s:generator>创建生成迭代器,并使用“Converter”对象修改迭代器值。
1. 动作
有一个方法,Action类返回一个“Converter对象。
GeneratorTagAction
package com.xuhuhu.common.action;
import org.apache.struts2.util.IteratorGenerator.Converter;
import com.opensymphony.xwork2.ActionSupport;
public class GeneratorTagAction extends ActionSupport{
public String execute() {
return SUCCESS;
}
public Converter getLanguageConverter(){
return new Converter() {
public Object convert(String value) throws Exception {
if("java".equals(value)){
return "[java value in converter] - " + value;
}else{
return value;
}
}
};
}
}
2. Generator 标签示例
下面的JSP页面使用generator标签演示动态创建一个迭代器。“separator”属性是必需的,其分离val到迭代器的条目中。
“converter”属性是可选的,它允许修改值。在这种情况下,它会调用GeneratorTagAction的getLanguageConverter()方法,如果值等于“Java”字符串并修改值。
generator.jsp
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
</head>
<body>
<h1>Struts 2 Generator tag example</h1>
1. Generator tag example.
<s:generator val="%{'java|.net|c|python|shell'}" separator="|">
<ol>
<s:iterator>
<li><s:property /></li>
</s:iterator>
</s:generator>
</ol>
2. Generator tag with converter example
<s:generator val="%{'java|.net|c|python|shell'}" separator="|"
converter="%{languageConverter}">
<ol>
<s:iterator>
<li><s:property /></li>
</s:iterator>
</s:generator>
</ol>
</body>
</html>
找不到任何使用generator标签示例,因为不建议在页面迭代值。
3. 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.devMode" value="true" /> <package name="default" namespace="/" extends="struts-default"> <action name="appendTagAction" class="com.xuhuhu.common.action.AppendTagAction" > <result name="success">pages/appendIterator.jsp</result> </action> </package> </struts>
4. 示例
http://localhost:8080/struts2generator/generatorTagAction.action

参考
上一篇:
struts2 <s:append>标签示例
下一篇:
Struts2 <s:merge>标签示例
