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