Struts1_处理数据的技巧

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

-->

你可能感兴趣的:(struts1)