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>標籤示例
