struts2 <s:generator>标记用于基于在页中提供“val”属性,以产生一个迭代。这里创建一个web工程:struts2generatortag,来演示在多个复选框如何设置的默认值,整个项目的结构如下图所示:


generatortagaction
package com.h3.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;
}
}
};
}
}
下面的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>
<?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.h3.common.action.appendtagaction" > <result name="success">pages/appenditerator.jsp</result> </action> </package> </struts>
http://localhost:8080/struts2generator/generatortagaction.action
