1、ActionFrom中:productId为一个整数的数组,页面中要求类似这样子的显示:1,2,3,4, 最后一个不加逗号,处理技巧:
<c:forEach items="${stepForm.productId}" var="p" varStatus="vs">
${p }
<c:if test="${vs.count != fn:length(stepForm.productId)}">
,
</c:if>
</c:forEach>
2、多步收集数据时不能用ActionForm默认的数据重置的方法,处理技巧:
//购物车:不能用这个重置数据的方法
// public void reset(ActionMapping mapping, HttpServletRequest request) {
// this.name = null;
// this.productId = null;
// this.address = null;
// }
//自己写重置的方法,在开始购物前调用(Action中调用)
public void resetField() {
this.name = null;
this.productId = null;
this.address = null;
}
3、Struts1的国际化:
页面传一个参数,确定是用中文还是英文
Action处理方法:
String lang = request.getParameter("lang");
Locale currentLocale = Locale.getDefault();
if ("zh".equals(lang)) {
currentLocale = new Locale("zh", "CN");
}else if("en".equals(lang)) {
currentLocale = new Locale("en", "US");
}
//两种方法告诉Struts1 locale信息 下面这两行等效。
//如果没有告诉Struts1 locale信息,Struts1会默认取服务器的locale信息
//request.getSession().setAttribute(Globals.LOCALE_KEY, currentLocale);
this.setLocale(request, currentLocale);
return mapping.findForward("index");
Struts配置文件加上资源文件的配置:
<message-resources parameter="res/MessageResources" />
页面上取资源文件内容的方法:
1、struts标签:
<bean:message key="user.username"/>
2、JSTL标签:
<fmt:message key="user.username"/>
4、DispatchAction
/**
* 传的方法名参数不能叫:execute perform(Struts1以前叫这个方法)
*/
public class UserAction extends DispatchAction {
/**
* 不传参数的时候调用这个方法
*/
@Override
protected ActionForward unspecified(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
//调用业务逻辑操作
List userList = UserManager.getInstance().findAllUserList();
request.setAttribute("userlist", userList);
return mapping.findForward("list_success");
}
/**
* 用户添加
* 参数和execute方法参数一致, 页面传add参数
*/
public ActionForward add(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
//获取从页面表单中提交过来的值
UserActionForm uaf = (UserActionForm)form;
User user = new User();
BeanUtils.copyProperties(user, uaf);
user.setCreateDate(new Date());
//调用业务逻辑操作
UserManager.getInstance().addUser(user);
return mapping.findForward("success");
}
}
struts配置文件:
<!-- 全局的跳转 -->
<global-forwards>
<forward name="success" path="/user/usermaint.do" redirect="true"/>
</global-forwards>
<!-- parameter :调用不同的方法 页面传参,Struts自动接收然后调用对应的方法 -->
<action-mappings>
<action path="/user/usermaint"
type="com.aowin.actions.UserAction"
name="userForm"
scope="request"
parameter="command"
>
<forward name="list_success" path="/user/user_list.jsp"/>
</action>
</action-mappings>
<!--parameter参数值不能是execute或perform
http://localhost:8080/user/usermaint.do?command=.... 这里不能传execute或者perform
-->