1. Action中的定义
/**
* <p>
* 根据id查找用户信息
* </p>
*
* @return 相应的RESULT
* @throws Exception : 业务处理过程中的异常
*/
public String findById() throws Exception {
User entity = userService.findById(uid);
if (entity != null) {
// 将实体加入到request中去,以备显示
ServletActionContext.getRequest().setAttribute("entity", entity);
return SUCCESS;
}
else {
return ERROR;
}
}
其他的属性和getter与setter方法省略
2.struts.xml文件的配置
<!-- 查找所有匹配的用户 -->
<action name="find" class="UserAction" method="find">
<result name="success">/user/index.jsp</result>
<result name="input">/user/find.do</result>
<!-- 每页显示的记录条数 -->
<param name="size">10</param>
<!-- 这里不能使用相对地址 -->
<param name="url">/user/find.do?page=</param>
</action>
<!-- 查找所给ID的用户 -->
<action name="findById" class="UserAction" method="findById">
<result name="success">/user/modify.jsp</result>
<result name="error">/user/find.do</result>
</action>
<!-- 用户修改 -->
<action name="modify" class="UserAction" method="modify">
<result name="success" type="redirect">
/user/find.do?page=1
</result>
<result name="input">/user/modify.jsp</result>
</action>
</package>
</struts>
3.修改的jsp页面
--></mce:style><style type="text/css" mce_bogus="1"> /* 将 IE 5* 的 css 方块模型修正放在这个条件注释中 */
.twoColFixLt #sidebar1 { width: 230px; }
</style>
<![endif]--><!--[if IE]>
<mce:style type="text/css"><!--
/* 请将所有版本的 IE 的 css 修复放在这个条件注释中 */
.twoColFixLt #sidebar1 { padding-top: 30px; }
.twoColFixLt #mainContent { zoom: 1; }
/* 上面的专用 zoom 属性为 IE 提供避免错误所需的 hasLayout */
--></mce:style><style type="text/css" mce_bogus="1">
/* 请将所有版本的 IE 的 css 修复放在这个条件注释中 */
.twoColFixLt #sidebar1 { padding-top: 30px; }
.twoColFixLt #mainContent { zoom: 1; }
/* 上面的专用 zoom 属性为 IE 提供避免错误所需的 hasLayout */</style>
<![endif]-->
</head>
<body class="main">
<div id="sidebar1">
<h3>
用户管理
</h3>
<ul>
<li>
<s:a href="/user/register.jsp" mce_href="user/register.jsp">用户注册</s:a>
</li>
<li>
<s:a href="/user/modify.do" mce_href="user/modify.do">修改用户</s:a>
</li>
<li>
<s:a href="/user/remove.do" mce_href="user/remove.do">删除用户</s:a>
</li>
<li>
<s:a href="/user/find.do?page=1" mce_href="user/find.do?page=1">查找用户</s:a>
</li>
</ul>
</div>
<div id="mainContent">
<fieldset>
<legend>
修改用户信息
</legend>
<s:actionerror cssClass="color:red"/>
<s:set id="user" value="#request.entity"/>
<s:form action="/user/modify.do" name="RegisterForm">
<s:token></s:token>
<s:hidden id="uid" value="#user.uid"></s:hidden>
<s:textfield id="uname" name="uname"
key="csdn.action.user.register.form.uname" value="%{#user.uname}"></s:textfield>
<s:textfield id="upass" name="upass"
key="csdn.action.user.register.form.upass" value="%{#user.upass}"></s:textfield>
<s:textfield id="email" name="email"
key="csdn.action.user.register.form.email" value="%{#user.email}"></s:textfield>
<s:textfield id="prompt" name="prompt"
key="csdn.action.user.register.form.prompt" value="%{#user.prompt}"></s:textfield>
<s:textfield id="answers" name="answers"
key="csdn.action.user.register.form.answers" value="%{#user.answers}"></s:textfield>
<s:textfield id="nickname" name="nickname"
label="昵称" value="%{#user.nickname}"></s:textfield>
<s:textfield id="signed" name="signed"
label="个性签名" value="%{#user.signed}"></s:textfield>
<s:textfield id="address" name="address"
label="地址" value="%{#user.address}"></s:textfield>
<!--
<s:file id="picture" name="picture" label="picture"></s:file>
-->
<s:submit key="csdn.common.form.button.submit"></s:submit>
<s:reset key="csdn.common.form.button.reset"></s:reset>
</s:form>
</fieldset>
</div>
</body>
</html>
3.显示效果
4.总结
(1) 在struts 2.1.6中,好像不支持在value属性中使用JEE的EL了.
(2)如果你的%${#属性}表示要将属性值作为字符串显示
(3)在<s:set name="" value="" id=""/>中,要使用id属性,而不是name属性来指定要接下来要使用的变量