简单OA项目笔记(4):更新操作 (P-Action)



    项目里的更新操作写的不赖,分为两步,解决了数据不同步的问题:

    第一步:预处理:提取、编辑单个信息
    第二步:把预处理的结果传给真正的执行者,修改保存

    这个预处理有点意思,它把一个业务细分成俩个操作,第二个操作能根据处理结果返回到预处理的结果上继续修改,等于把一次update完完全全分成两个互不影响的操作了。



执行的数据流:

1.jsp提交要更改的id

<td><s:a href="updatePUser.action?user.id=%{#ul.id}">update</s:a>
提交到UpdatePUserAction(注意有个“P”)



2.UpdatePUserAction

这是个预处理的action,P是perview的意思

	public String execute() throws Exception
	{
		user = this.service.findById(user.getId());
		
		return SUCCESS;
	}

这个UpdatePUserAction挺有意思,经过它的预处理 看似麻烦了,其实把流程划分的清晰了很多

user = this.service.findById(user.getId());
这的前后两个user不是一个对象:
后一个user只有从jsp传来的id属性
前一个user是通过id查找到的完整的对象




3.struts处理

UpdatePUserAction返回SUCCESS后

跳转到新的 /update.jsp

		<action name="updatePUser" class="updatePUserAction">
			<result name="success">/update.jsp</result>
		</action>

这两个action多例就行了,没有其他特别的配置

<bean id="updatePUserAction" class="com.test.action.user.UpdatePUserAction" scope="prototype">
	<property name="service" ref="userService"></property>
</bean>

<bean id="updateUserAction" class="com.test.action.user.UpdateUserAction" scope="prototype">
	<property name="service" ref="userService"></property>
</bean>




4.update.jsp

把表单提交到真正的 UpdateUserAction(不带P了)

这ID用户是不应该改的,所以表单中要用 hidden 传个隐藏值,其余就是正常输入

    <s:form action="updateUser">
    	<table>
    		<tr>
    			<td>
    				<s:hidden name="user.id" value="%{user.id}"></s:hidden>
    			</td>
    		</tr>


5.struts验证

UpdateUserAction-validation.xml

和昨天学的struts2的验证框架一样



6.UpdateUserAction

真正的执行,

	public String execute() throws Exception
	{
		this.service.update(user);
		
		return SUCCESS;
	}

执行的结果如果成功了,就重定向到ListUserAction

如果有误就去重新输入,之前预处理出来的结果也还都在

		<action name="updateUser" class="updateUserAction">
			<result name="success" type="redirect">listUser.action</result>
			<result name="input">/update.jsp</result>
		</action>



















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值