基于struts框架安全运文平台风险管理模块的实现
PRRequestProxy('manage','getTreeInfo',obj);
上述函数中的PRRequestProxy('manage','getTreeInfo',obj)语句调用的是ManageAction类中的getTreeInfo()方法。
String bid = PRUtil.getParameter(request, "b_id");
JSONObject obj =bl.getTreeNodeInfo(bid);
js.setCallBackFunction("setManageValue");
return PRUtil.responseProxy(response,js);
其中PRUtil.getParameter(request, "b_id")是获得被点击的节点的b_id; 而bl.getTreeNodeInfo(bid)是从BL对象中得到那个节点的信息,该节点的信息被封装在JSONObject对象中。然后,利用JSObj的方法指定回调函数和回调参数,最后由PRUtil的responseProxy(response,js)方法将请求传回到刚才发出请求的页面menuTree中,由该页面的setManageValue方法接收传过来的节点信息组成的对象。
然后,将该对象传给manage页面,方法如下:
function setManageValue(jsonObj)
{ ……
parent.manageFrame.changeValue(jsonObj);
……
在manage页面中的changeValue(isonObj)中对表格中的文本域进行赋值。如下所示:
{ ……
……
在ManageAction类中,传回menuTree页面的JSONObject对象是由BL中的getTreeNodeInfo函数返回的,而该函数中的代码是:
public JSONObject getTreeNodeInfo(String bid) throws SQLException, JSONException
ManageDAO dao = new ManageDAO();
TreeVO vo = dao.getTreeNodeInfo(bid);
JSONObject obj = new JSONObject();
……
显然,该方法返回的JSONObject对象的信息来自ManageDAO类的对象,由该对象调用它的getTreeNodeInfo(String)得到。ManageDAO类中的getTreeNodeInfo(String )方法如下:
public TreeVO getTreeNodeInfo(String bid) throws SQLException
{
String sql = "SELECT * FROM business WHERE bid=?";
Dataset ds = executeQuery(sql, bid);
if ((ds != null) && (ds.getRowCount() != 0))
{
vo.setBName(ds.getString("b_name"));
……
至此,该查询操作结束。由于使用了局部刷新技术,当用户点击左侧的树时,右边页面和树域没有进行刷新,但速度好像很快,用户甚至感觉不到页面有所晃动。
本系统中实现的修改方法与查看信息类似,它们对后台数据库的操作都是调用的同一个方法。设计者在页面的修改方法里直接调用了查看方法,从而调用后台函数。修改方法的基本思路是:要修改选中节点的信息首先要知道该节点的信息,然后才能对其进行修改。然后再将控制客户端请求服务器响应的<hidden>控件的值改为“update”即可执行调用相应修改操作了。所以总的来说,修改方法是建立在查看信息的基础之上的,该方法的页面代码为:
function update(id,parameters)
{
parent.manageFrame.executeAdd(id);
clickNode(id);
parent.manageFrame.changeHiddenValue("update");
parent.manageFrame.document.all.reWrite.disabled="";
parent.manageFrame.document.all.ok1.disabled="";
parent.manageFrame.document.all.BID.disabled="disabled";
}
其中的clickNode(id);方法即是本系统中的查看信息方法的调用。
1) 用户选中右键菜单的添加选项,触发js函数:
parent.manageFrame.clean(); //把右侧表单清空;
parent.manageFrame.executeAdd(id); //把被选中节点的id记为新节点的父id;
parent.manageFrame.changeHiddenValue('add'); /*改变用来控制将要调用action中的哪一个方法的hidden变量的值。*/
parent.manageFrame.document.all.reWrite.disabled="";
parent.manageFrame.document.all.ok1.disabled="";/*这两句是恢复确定和取消两按钮的状态为可操作状态。*/
2) 然后,在右边表单填完数据并提交时调用doUpdate方法,如下:
{
……//其它数据与上边类似
if((document.all.controllButton.value =='add'))
PRRequestProxy('manage','addTreeNode',obj); /*语句调用manageAction的addTreeNode方法,并传参数obj。*/
} PRRequestProxy('manage','addTreeNode',obj)
在PRRequestProxy('manage','addTreeNode',obj)语句中程序调用的是ManageAction类中的addTreeNode()方法其部分代码为:
{
……
TreeVO vo = setVO(mapping, actionform, request, response);
JSONObject json=new JSONObject();
json=bl.getTreeNodeInfo(""+vo.getPBid());
//在二级节点下添加树节点。
//在根节点下添加节点,即在中国人民银行总节点下添加。
//在其他级别节点下添加。
vo.setRootBid(json.getInt("root_bid"));
js.setCallBackFunction("freshTree");//用于设置回调函数然后将结果显示出来。
if(bl.addTreeNode(vo)==1) //调用ManageBL中的方法执行添加操作。
{ //如果所添加的信息符合要求则返回成功字串
js.addCallBackFunParam("OK,添加成功");
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >>