您的位置:首页 > 其它

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

2012-11-13 19:36 357 查看
    项目里的更新操作写的不赖,分为两步,解决了数据不同步的问题:

    第一步:预处理:提取、编辑单个信息

    第二步:把预处理的结果传给真正的执行者,修改保存

    这个预处理有点意思,它把一个业务细分成俩个操作,第二个操作能根据处理结果返回到预处理的结果上继续修改,等于把一次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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: