您的位置:首页 > 编程语言 > Java开发

MyEclipse使用技巧之通过断点看值是否存入action中

2016-01-20 16:37 447 查看
在页面中新”案发区划“栏:

<tr>
<td class="form_label">
<table cellpadding="0" cellspacing="0" width="98%">
<tr>
<td align="left" id="t_sceneRegionalism">发案区划</td>
<td align="right"><img name="reg" src="<%=path%>/images/must.gif"/></td>
</tr>
</table>
</td>
<td class=form_content>
<jdf:singleDict dictName="GXSDM" chooseMode="query" regionFlag="region" mode="tree" name="alarmInfo.sceneRegionalism" cssStyle="width:70%" id="sceneRegionalism" readonly="true" cssClass="field" pingyiSelect="1"/>
</td>
</tr>


显示如下:



表单提交保存代码:

<div style="text-align: center">
<input type="button" class="button" onclick="saveOnClick();" value="保存">
</div>

function <span style="color:#33cc00;">saveOnClick</span>() {
<span style="white-space:pre">	</span>var opttype=document.getElementById("optype").value;
<span style="white-space:pre">	</span>if(v.exec()){
<span style="white-space:pre">		</span>var ispass= validatealarmInforMants();
if(ispass){
<span style="white-space:pre">	</span>if(opttype=='0'){
var buffalo = new Buffalo("<%=path%>/remoting");
<span style="white-space:pre">		</span>var alarmNo=document.getElementById("alarmNo").value;
var isczjjbh=true;
buffalo.remoteCall("/AlarmInfoJbjManagerAjax.findAlarmInfoByAlarmNo",[alarmNo],function(reply){
<span style="white-space:pre">	</span>var count=parseInt(reply.getResult());
<span style="white-space:pre">	</span>if (count>=1){
<span style="white-space:pre">		</span>alert("警情受理号已经存在!");
<span style="white-space:pre">	</span>}else{
if (!confirm("是否确认提交接警信息?")) return false;
if (isBusy()) {
<span style="white-space:pre">	</span>alert("已经提交,请等待完成!");
} else {
var obj = document.all.addAlarmInfoForm;
obj.action = "<%=path%>/pages/business/assign/sumbitAlarmInfo.action";
obj.submit();
}
}
})
}else{
<span style="white-space:pre">	</span>if (!confirm("是否确认提交接警信息?")) return false;
if (isBusy()) {
alert("已经提交,请等待完成!");
} else {
var obj = document.all.addAlarmInfoForm;
obj.action = "<%=path%>/pages/business/assign/sumbitAlarmInfo.action";
obj.submit();
<span style="white-space:pre">	</span>}
<span style="white-space:pre">	</span>}
<span style="white-space:pre">	</span>}
}
}


通过提交代码看出,转到submitAlarmInfo.action,通过使用ctrl+H键,搜索全系统文件,在File Search中搜索submitAlarmInfo.action,找到该值出现的文件xwork-assign.xml:

<action name="sumbitAlarmInfo" class="com.cbitech.csims.business.action.assign.AlarmInfoAction" method="sumbitAlarmInfo">
<result name="success" type="dispatcher">/pages/business/assign/addAlarmInfo.jsp</result>
</action>


通过上述代码得到执行该方法的Action文件,打开该AlarmInfoAction.java文件,按ctrl+F在该文件中找”submitAlarmInfo“方法:

/**
* 提交信息接警信息
* @return
*/
public String sumbitAlarmInfo(){
SysUser user=this.getLoginUser();
String  curuserName=user.getTrueName();
Date    curDate=sysUtilManager.getSystemDateTime();

if(this.optype.equals("0")){
<span style="color:#3333ff;">alarmInfo.setSceneRegionalismCn(sceneRegionalismDisplayValue)</span>;
try {<span style="white-space:pre">	</span>//新增
if (alarmInfo != null && alarmInforMant != null) {
String alarmInfoId = sysUtilManager.getNextId();
alarmInfo.setId(alarmInfoId); // id
alarmInfo.setCreateUser(curuserName);
alarmInfo.setCreateDatetime(curDate);
alarmInfo.setTaskAssignStatus("0");
alarmInfo.setTaskFeedbackStatus("0");
alarmInfo.setDeleteFlag("0");
alarmInfoJbjManager.insertAlarmInfoJbj(alarmInfo);
saveAlarmInfoMant(alarmInfoId, curuserName, curDate);
}
} catch (Exception e) {
e.printStackTrace();
}
}else{<span style="white-space:pre">	</span>//修改
<span style="color:#3333ff;">alarmInfo.setSceneRegionalismCn(sceneRegionalismDisplayValue)</span>;
alarmInfo.setUpdateDatetime(curDate);
alarmInfo.setUpdateUser(curuserName);
alarmInfo.setId(alarmId);
alarmInfoJbjManager.updateAlarmInfo(alarmInfo);
alarmInfoJbjManager.deleteAlarmInfoMant(alarmId);
saveAlarmInfoMant(alarmId, curuserName, curDate);
}

optRsult = SUCCESS;
return "success";
}


当新增时,调用insertAlarmInfoJbj,按住Ctrl,鼠标放在该接口上查看接口(Manager)以及接口说明(ManagerImpl),在ManagerImpl中找到对应的方法:

/**
* 新增接报警信息
* @param alarmInfo
*/
public void insertAlarmInfoJbj(AlarmInfoJbjModel alarmInfo) {
try {
getJbjAssignDao().getSqlMapClientTemplate().insert("insertAlarmInfoJbj", alarmInfo);
} catch (Exception e) {
e.printStackTrace();
}
}


由方法看出,Dao调用的SQL语句为insetALarmInfoJbj,继续Ctrl+H搜索所有文件,在SQL.xml中找到该语句,打开该文件:

增加两个字段:ALARM_REGIONALISM ALARM_REGIONALISM_CN

同样在数据库对应表格中增加两个字段:ALARM_REGIONALISM ALARM_REGIONALISM_CN分别存放案发区划代码,案发区划中文

<insert id="insertAlarmInfoJbj" parameterClass="com.cbitech.csims.business.dao.model.assign.AlarmInfoJbjModel">
insert into alarm_info
(id,
ALARM_TITLE,
ALARM_NO,
ALARM_TIME,
ALARM_PROPERTY,
ALARM_PROPERTY_CN,
ALARM_DESC,
ALARM_RECEIVER_NAME,
ALARM_RECEIVER_PHONE,
ALARM_REMARK,
TASK_ASSIGN_STATUS,
TASK_FEEDBACK_STATUS,
DELETE_FLAG,
CREATE_USER,
<span style="color:#ff9900;">ALARM_REGIONALISM,
ALARM_REGIONALISM_CN</span>,
CREATE_DATETIME)
values
(#id#,
#alarmTitle#,
#alarmNo#,
#alarmTime#,
#alarmProperty#,
#alarmPropertyCn#,
#alarmDesc#,
#alarmReceiverName#,
#alarmReceiverPhone#,
#alarmRemark#,
#taskAssignStatus#,
#taskFeedbackStatus#,
#deleteFlag#,
#createUser#,
<span style="color:#6633ff;"> </span><span style="color:#ff9966;"> </span><span style="color:#ff6600;">#sceneRegionalism#,
#sceneRegionalismCn#,</span>
#createDatetime#
)
</insert>

在修改sql以后,根据parameterClass,按住Ctrl,鼠标左击进入该类,对新字段进行定义并创建get set方法:

(若不创建,则数据库会报错)

/**
* 发案区划代码
*/
private String sceneRegionalism;

/**
* 发案区划中文
*/
private String sceneRegionalismCn;

<span style="white-space:pre">	</span>public String getSceneRegionalism() {
return sceneRegionalism;
}

public void setSceneRegionalism(String sceneRegionalism) {
this.sceneRegionalism = sceneRegionalism;
}

public String getSceneRegionalismCn() {
return sceneRegionalismCn;
}

public void setSceneRegionalismCn(String sceneRegionalismCn) {
this.sceneRegionalismCn = sceneRegionalismCn;
}


至此:通过流程操作并查看数据库表发现,新增字段可以存到数据库中,但是新增的“发案区划中文”字段并不能保存到数据库中,在AlarmInfoAction.java中的sumbitAlarmInfo增加断点,Tomcat在debug模式下启动,新增一项并保存则进入该方法时会暂停,按F6继续操作,右击alarminfo选择inspect,查看各个值,发现sceneRegionalismCn值为null,进入页面,右击查看源代码:

<tr>
<td class="form_label">
<table cellpadding="0" cellspacing="0" width="98%">
<tr>
<td align="left" id="t_sceneRegionalism">发案区划</td>
<td align="right"><img name="reg" src="/csims/images/must.gif"/></td>
</tr>
</table>
</td>
<td class=form_content>
<input type="text" name="<span style="color:#3333ff;">sceneRegionalismDisplayValue</span>" value="" id="<span style="color:#3333ff;">sceneRegionalismDisplayValue</span>" class="field" style="width:70%"onBlur='showDIV(false,"sceneRegionalism","GXSDM");'onFocus='showDIV(true,"sceneRegionalism","GXSDM");'onkeyup='query("sceneRegionalism");'/>
<span style="white-space:pre">	</span><input type="hidden" name="dictRoot" value="GXSDM" id="sceneRegionalismType"/>
<span style="white-space:pre">	</span><input type="hidden" name="dictField" value="Field" id="sceneRegionalismField" />
<span style="white-space:pre">	</span><input type="hidden" name="dictModel" value="Single" id="sceneRegionalismModel"/>
<span style="white-space:pre">		</span><a href="#" name="sceneRegionalismLink" id="sceneRegionalismLink" onclick="sceneRegionalismOnClick('GXSDM'); return false;">
<span style="white-space:pre">		</span><img src="/csims/images/icon/dictselect.gif" border="0" align="absmiddle"></a>
<span style="white-space:pre">		</span><input type="hidden" name="alarmInfo.sceneRegionalism" value="" id="sceneRegionalism"/>


由源代码看出:“发案区划”存入了“sceneRegionalismDisplayValue”中,在执行submitAlarmInfo方法时,在该类AlarmInfoAction.java中定义新String为
“sceneRegionalismDisplayValue”

/**
* 发案区划中文
*/
private String sceneRegionalismDisplayValue;

<span style="white-space:pre">	</span>public String getSceneRegionalismDisplayValue() {
return sceneRegionalismDisplayValue;
}

public void setSceneRegionalismDisplayValue(String sceneRegionalismDisplayValue) {
this.sceneRegionalismDisplayValue = sceneRegionalismDisplayValue;
}


在执行新增和修改前为sceneRegionalismCn赋值sceneRegionalismDisplayValue,具体参加上面submitAlarmInfo方法。至此再使用断点,查看后值存入成功。

增加表单校验:

<script language="javascript">
var sexDictHTML = '<ww:property value="sexDictHTML" escape="false"/>';
var a_fields = {
'alarmInfo.alarmTitle' : {'l':'警情标题','r':true,'t':'t_alarmTitle','max':50},
'alarmInfo.alarmNo' : {'l':'警情受理号','r':true,'f':'alphanum','t':'t_alarmNo', 'max':30},
'alarmInfo.alarmTime' : {'l':'接警时间','r':false,'f':'datetime','t':'t_alarmTime', 'max':30},
'alarmInfo.alarmPropertyCn' : {'l':'案件性质','r':true,'t':'t_alarmPropertyCn','max':300},
'alarmInfo.alarmDesc' : {'l':'简要案情','r':true,'t':'t_alarmDesc'},
'alarmInfo.alarmReceiverName' : {'l':'接警人','r':true,'t':'t_alarmReceiverName','max':30},
'<span style="color:#3333ff;">sceneRegionalismDisplayValue</span>' : {'l':'发案区划','r':true,'t':'t_sceneRegionalism','max':30},
'alarmInfo.alarmReceiverPhone' : {'l':'接警人联系电话','r':true,'f':'phoneMobile','t':'t_alarmReceiverPhone', 'max':20}
},
o_config = {
'to_disable' : ['Submit'],
'alert' : 1
}
var v = new validator('addAlarmInfoForm', a_fields, o_config);
<script>


校验调用在saveOnClick()方法中,参见上面。至此功能完成。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: