如何实现表单一次上传多表数据并更新到数据库
2007-11-05 19:26
671 查看
如何实现表单一次上传多表数据并更新到数据库
胡立新
newxy的标签<nbean:formBean name=”…” sql=”……”/>会经查询语句得到一formBean,formBean中含有记录集。如果sql语句是联表查询,formBean中会有来自多个表的数据。
如果用户在<nhtml:form …>…</nhtml:form>标签产生的表单中修改了数据,如何将这些修改后的多表数据更新到数据库中。可以利用newxy的标签<nlogic:action1/>或<nlogic:action2/>及标签<nhtml:buttons/>或<nhtml:button/>来实现。有两种方法。
方法一:将<nlogic:action1/>换成<nlogic:action2/>,其path属性是struts某action配置的path元素值,通常带有“.do"。 这样可在后台Struts的action中处理。
BaseDAO baseDao=new BaseDAO();
DynaDto dto=(DynaDto)formBean.getDto();
//保存第一个表
dto.set_table(“table1”);
baseDao.update(dto);
//保存第二个表
dto.set_table(“table2”);
baseDao.update(dto);
//保存第三个表
dto.set_table(“table3”);
baseDao.update(dto);
如果查询结果使用了别名,如select a.field1 as f1,... from table1 a,...,则在update前应作处理,如下:
dto.set_table(“table1”);
dto.set('field1',dto.get('f1'));
baseDao.update(dto);
前台jsp页面类似如下:
<nlogic:action2 id=”act1” path="/myAction.do"/>
<nbean:formBean name="form1" sql="..."/>
<nhtml:form action="" formName="form1">
<html:hidden property="_table" value="table1"/>
......
</nhtml:form>
<div><nhtml:buttons actionId="act1"/></div>
前台表单中的_table属性被忽略。如果表单某属性是table1字段也是table2字段,如联表查询时的id,这个id就会更新到table1和table2中。
方法二:让<nlogic:action1/>更新或插入表table1,在jsp页面上镶入java脚本更新或插入其它表。但要理解<nlogic:action1/>执行动作的条件。
<nlogic:action1/>执行动作的条件是:访问jsp页面的参数含有_actionId、_formName,且值分别等于<nlogic:action1/>的id值、formName值。这个<nlogic:action1/>是"update"、"remove"还是其它动作要看参数method的值是什么。java脚本执行条件应与<nlogic:action1/>的条件相同。jsp页面应类似这样的:
<nlogic:action1 id="act1" formName="form1"/>
<%
String _actionId=request.getParameter("_actionId");
String _formName=request.getParameter("_formName");
if("act1".equals(_actionId) && "form1".equals(_formName)){
net.newxy.struts_faces.DynaFormBean formBean=(net.newxy.struts_faces.DynaFormBean)session.getAttribute("form1");
BaseDAO baseDao=new BaseDAO();
DynaDto dto=(DynaDto)formBean.getDto();
//保存第二个表 第一个table1由标签更新了。
dto.set_table(“table2”);
baseDao.update(dto);
//保存第三个表
dto.set_table(“table3”);
baseDao.update(dto);
}
%>
<nbean:formBean name="form1" sql="..."/>
<nhtml:form action="/manager/user/index.jsp" formName="form1">
<html:hidden property="_table" value="table1"/>
......
</nhtml:form>
<div><nhtml:buttons actionId="act1"/></div>
如果要在一个事务中更新多表,则应使用方法一。如果利用newxy实现事务,可参看newxy的技术文档有关事务部分。
胡立新
newxy的标签<nbean:formBean name=”…” sql=”……”/>会经查询语句得到一formBean,formBean中含有记录集。如果sql语句是联表查询,formBean中会有来自多个表的数据。
如果用户在<nhtml:form …>…</nhtml:form>标签产生的表单中修改了数据,如何将这些修改后的多表数据更新到数据库中。可以利用newxy的标签<nlogic:action1/>或<nlogic:action2/>及标签<nhtml:buttons/>或<nhtml:button/>来实现。有两种方法。
方法一:将<nlogic:action1/>换成<nlogic:action2/>,其path属性是struts某action配置的path元素值,通常带有“.do"。 这样可在后台Struts的action中处理。
BaseDAO baseDao=new BaseDAO();
DynaDto dto=(DynaDto)formBean.getDto();
//保存第一个表
dto.set_table(“table1”);
baseDao.update(dto);
//保存第二个表
dto.set_table(“table2”);
baseDao.update(dto);
//保存第三个表
dto.set_table(“table3”);
baseDao.update(dto);
如果查询结果使用了别名,如select a.field1 as f1,... from table1 a,...,则在update前应作处理,如下:
dto.set_table(“table1”);
dto.set('field1',dto.get('f1'));
baseDao.update(dto);
前台jsp页面类似如下:
<nlogic:action2 id=”act1” path="/myAction.do"/>
<nbean:formBean name="form1" sql="..."/>
<nhtml:form action="" formName="form1">
<html:hidden property="_table" value="table1"/>
......
</nhtml:form>
<div><nhtml:buttons actionId="act1"/></div>
前台表单中的_table属性被忽略。如果表单某属性是table1字段也是table2字段,如联表查询时的id,这个id就会更新到table1和table2中。
方法二:让<nlogic:action1/>更新或插入表table1,在jsp页面上镶入java脚本更新或插入其它表。但要理解<nlogic:action1/>执行动作的条件。
<nlogic:action1/>执行动作的条件是:访问jsp页面的参数含有_actionId、_formName,且值分别等于<nlogic:action1/>的id值、formName值。这个<nlogic:action1/>是"update"、"remove"还是其它动作要看参数method的值是什么。java脚本执行条件应与<nlogic:action1/>的条件相同。jsp页面应类似这样的:
<nlogic:action1 id="act1" formName="form1"/>
<%
String _actionId=request.getParameter("_actionId");
String _formName=request.getParameter("_formName");
if("act1".equals(_actionId) && "form1".equals(_formName)){
net.newxy.struts_faces.DynaFormBean formBean=(net.newxy.struts_faces.DynaFormBean)session.getAttribute("form1");
BaseDAO baseDao=new BaseDAO();
DynaDto dto=(DynaDto)formBean.getDto();
//保存第二个表 第一个table1由标签更新了。
dto.set_table(“table2”);
baseDao.update(dto);
//保存第三个表
dto.set_table(“table3”);
baseDao.update(dto);
}
%>
<nbean:formBean name="form1" sql="..."/>
<nhtml:form action="/manager/user/index.jsp" formName="form1">
<html:hidden property="_table" value="table1"/>
......
</nhtml:form>
<div><nhtml:buttons actionId="act1"/></div>
如果要在一个事务中更新多表,则应使用方法一。如果利用newxy实现事务,可参看newxy的技术文档有关事务部分。
相关文章推荐
- 如何实现表单一次上传多表数据并更新到数据库
- 请高手帮忙看看代码如何修改(我要实现表单调用数据并更新到数据库)
- PHP如何实现表单提交时用户上传头像到数据库并读出显示
- Android数据库更新并保留原来的数据如何实现
- 如何实现添加多条信息到GridView中,而一次保存到数据库,不被页面刷新而丢失数据呢?
- JQuery Clone 添加多行数据,并更新到数据库的实现代码
- Sql Server2008如何在存储过程中实现根据判断插入更新数据
- 利用ASP和XML实现客户端多表单域数据动态更新
- Android数据库更新并保留原来数据的实现
- 如何在Struts 数据库应用程序中实现记录的删除、更新及链接
- 发布好的SDE 如何注册,让数据库更新 实现arcgis 服务更新
- ThinkPHP3.2.3---mysql+ajax实现长连接,实时监测数据库数据是否更新
- 基于Spring MVC实现基于form表单上传Excel文件,批量导入数据
- 基于Spring3 MVC实现基于form表单上传Excel文件,批量导入数据!
- struts2+ckeditor+ckfinder实现文件的上传、从数据库获取数据、修改并提交到数据库中保存
- Java中,当表单含有文件上传时,提交数据的如何读取
- 如何使用 t-sql 更新数据库中日期字段的部分数据(年?月?日?时?分?秒?)
- 如何不用数据库实现内容的动态更新
- DATAGRIDVIEW动态筛选数据,实现编辑之后,点击按钮更新,及删除选中的列到数据库。
- 如何实现插入并更新数据