问题点:
为什么用以下代码:
<td width="5%">
<s:text name="studentPage.student.studentName"/>
</td>
<td class="bj" width="20%">
${studentPage.student.teacher.teacherName }
</td>
可以输出:“学生姓名:张老师”
而用:
<td width="5%">
<s:text name="studentPage.student.teacher.teacherName "/>
</td>
<td class="bj" width="20%">
${studentPage.student.teacher.teacherName }
</td>
却输出:“studentPage.student.teacher.teacherName :张老师”
而不是:“老师姓名:张老师”
解决方案:
1)环境,jdk1.5,tomcat5.5
2)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.ui.theme" value="simple" />
<constant name="struts.custom.i18n.resources" value="globalMessages"/>
<package name="anhuixiao" namespace="/anhuixiao" extends="struts-default">
<action name="studentshow" class="cn.anhuixiao.action.StudentShowAction">
<result name="show">/WEB-INF/page/studentShow.jsp</result>
</action>
</package>
</struts>
3)StudentShowAction.java
package cn.anhuixiao.action;
import cn.anhuixiao.bean.Student;
import cn.anhuixiao.bean.StudentPage;
public class StudentShowAction {
private StudentPage studentPage;
public StudentPage getStudentPage() {
return studentPage;
}
public void setStudentPage(StudentPage studentPage) {
this.studentPage = studentPage;
}
public String execute() {
studentPage = new StudentPage();
Student student = new Student();
student.setStudentName("anhuixiao");
studentPage.setStudent(student);
return "show";
}
}
4)Student.java
package cn.anhuixiao.bean;
public class Student {
private String studentName;
public Student(){
}
public String getStudentName() {
return studentName;
}
public void setStudentName(String studentName) {
this.studentName = studentName;
}
}
5)StudentPage.java
package cn.anhuixiao.bean;
public class StudentPage {
private Student student;
public StudentPage(){
}
public Student getStudent() {
return student;
}
public void setStudent(Student student) {
this.student = student;
}
}
6)globalMessages_zh_CN.properties
studentPage.student.studentName=anhuixiao
7)studentShow.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'personlist.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
</head>
<body>
EL表达式输出Action中studentPage.student.studentName内容:
${studentPage.student.studentName}<br/>
stuts2标签输出Action中studentPage.student.studentName内容:
<s:property value="studentPage.student.studentName"/><br/>
s:textfield输出Action中studentPage.student.studentName内容:
<s:textfield name="studentPage.student.studentName"/><br/>
s:text输出globalMessages_zh_CN.properties中 studentPage.student.studentName内容:
<s:text name="studentPage.student.studentName"/>
</body>
</html>
说明:
1)<s:textfield />对应html中的<input type=text/>
2) <s:text />对应html中的<label>,struts2主要用它读资源文件
3)如果配置在struts.xml中一定要有<constant name="struts.custom.i18n.resources" value="globalMessages"/>
4)如果配置在stuts.properties中一定要有 struts.custom.i18n.resources=globalMessages