当前位置: 首页 > 教程 > Struts2 >

Struts2 <s:generator>标签示例

精华
小牛编辑
150浏览
2023-03-14

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


在本教程中,将使用Struts2 <s:generator>标签来执行以下任务:
  1. 使用generator标签来创建生成迭代器。
  2. 使用<s:generator>创建生成迭代器,并使用“Converter”对象修改迭代器值。

1. 动作

有一个方法,Action类返回一个“Converter对象。

GeneratorTagAction

package com.yiibai.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.yiibai.common.action.AppendTagAction" >
			<result name="success">pages/appendIterator.jsp</result>
		</action>
		
	</package>
		
</struts>

4. 示例

http://localhost:8080/struts2generator/generatorTagAction.action


参考

  1. Struts2 generator 文档
  2. Struts2 Converter 文档
代码下载 -  http://pan.baidu.com/s/1mgm0W1E