Struts2(Webwork2)一些实战开发技能
Struts2(Webwork2)一些实战开发技巧一. !----使用反射动态取出 Pojo 的属性package com.leo.utilimport
Struts2(Webwork2)一些实战开发技巧
一.
<!---->
使用反射动态取出 Pojo 的属性
package com.leo.util;import java.lang.reflect.Method;public class HelloWorldBean {private String word;private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getWord() {return word;}public void setWord(String word) {this.word = word;}public HelloWorldBean() {name = "superleo";word = "Hello World!!!";}public String getProperty(String name) throws Exception {if (name != null && !name.equals("")) {Character ch = name.charAt(0);name = Character.toUpperCase(ch) + name.substring(1, name.length());Class cls = Class.forName("com.leo.util.HelloWorldBean");Method meth = cls.getMethod("get" + name, null);Object retobj = meth.invoke(this, null);return (String) retobj;}throw new RuntimeException();}public static void main(String[] args) throws Exception {HelloWorldBean bean = new HelloWorldBean();bean.setName("superleo");bean.setWord("name");System.out.println(bean.getProperty("name"));System.out.println(bean.getProperty("word"));}}?
?
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags"%><html><body><h3>正常方法:<s:property value="helloWorld.name" /> <br /><s:property value="helloWorld.word" /> <br />反射方法:<s:property value="helloWorld.getProperty('name')" /> <br /><s:property value="helloWorld.getProperty('word')" /></h3></body></html>?
?
<!---->二. <!---->用 iterator 迭代 Map 对象
?
?
List list = session.createQuery("select new MyVO(a.name, b.name, c.id) from .....").list();?
?
List list = session.createQuery("select new Map(a.name as fristName, b.name as secondName, c.id as id from .....").list();?
?
<s:iterator value="list" id="maps"> <tr name="ids" value="<s:property value="#maps.get('id')" />" /> <td align="center"><s:property value="#maps.get('fristName')" /></td> <td align="center"><s:property value="#maps.get('secondName')" /></td> </tr> </s:iterator>?
?
?
<!---->三. <!---->用 if 标签判断汉字问题
?
<s:if test="user.name == '程序'">...?
<s:if test="user.name == \'程序\'">...?
?
<s:if test="user.name == @com.leo.util.Constants@TYPE ">...?
<!---->四. <!---->用 iterator 双重循环
?
<ww:iterator value="lists" id="top"><ww:iterator value="users" id="sub">组名:<s:property value="#top.name" />,成员名:<s:property value="#sub.name" /></ww:iterator> 应该组总数:<s:property value="users.size" /></ww:iterator>?
?
上面的写法有很多种,但效果都是一样的,有兴趣可以多看看 OGNL 。