我从数据库获取了一些列表值并使用checked和unchecked(1或0)保存了该值
我的HTML标记是:
<div class="panel-body">
<form action="" id = "buindEligibilityData">
<table class="table">
<s:iterator value="eligibilityList" status="status">
<s:if test='%{lkpGroupId == "160100000005"}'>
<tr id="eligibilityTrDiv">
<td><input type="hidden" value="160100000005" name="gropuId"></td><td><input type="hidden" value="<s:property value='lkpDataName' />" name="lkpName"></td> <td><input type="hidden" value="<s:property value='lkpDataId' />" name="lkpDataId"></td><td > <s:property value='lkpDataName' /></td>
<td> <div class="example"><div>
<s:if test='%{chackBoxStatus == "1"}'>
<input value="1" id="hid_<s:property value='lkpDataId' />" type="hidden" name="checkbox1"/>
<input id="<s:property value='lkpDataId' />" class="chackBoxIdPrefix" type="checkbox" name="lkpDataIdcheckbox" checked="checked">
</s:if>
<s:else>
<input value="0" id="hid_<s:property value='lkpDataId' />" type="hidden" name="checkbox1"/>
<input id="<s:property value='lkpDataId' />" class="chackBoxIdPrefix" type="checkbox" name="lkpDataIdcheckbox" >
</s:else>
<label for="checkbox2"><span></span>bind For Prefix</label></div></div></td>
</tr>
</s:if>
</s:iterator>
<tr><td colspan="3" align="center"> <input type="button" value="Save Change" class="btn-info" align="middle" onclick="buindDataForPrefix()"> </td></tr>
</table>
</form>
</div>
onclick
功能:
function buindDataForPrefix() {
var form_data = $jq("#buindEligibilityData").serialize();
$jq.ajax({
type: 'post',
data:form_data,
mimeType:"multipart/form-data",
url: "buindEligibilityDataAdmissionInfo.do",
success: function(data){
$jq("#eligibilityTrDiv").html(data);
},
complete: function(data){
}
});
}
Java代码:
public String buindEligibilityData() {
String[] logInInfo = (String[]) ActionContext.getContext().getSession()
.get(sessionVariable.getUserLogInInfo());
String doctorEmpId = logInInfo[1].toString();
String companyNo = logInInfo[4].toString();
String getLkpDataIdPrefix = (String) ActionContext.getContext().getSession().get(sessionVariable.getLkpPrefixDataId());
System.out.println(lkpDataId);
System.out.println(lkpDataIdcheckbox);
String lkpDataIdArr[]=lkpDataId.split(",");
String lkpDataIdcheckboxArr[]=lkpDataIdcheckbox.split(",");
System.out.println(lkpDataIdArr.length);
System.out.println(lkpDataIdcheckboxArr.length);
System.out.println("lkpDataIdPrefixpp"+getLkpDataIdPrefix);
System.out.println("gropuId"+gropuId);
patientProgressNoteSql.savebuindEligibilityData(gropuId, getLkpDataIdPrefix ,lkpDataId, lkpDataIdcheckbox, companyNo , doctorEmpId, lkpName);
return "buindEligibilityData";
}
SQL代码:
public Long savebuindEligibilityData(String LKPGRP_ID, String LKPDATA_ID_PREFIX, String LKPDATA_ID, String CHACK_STATUS, String COMPANY_NO, String CREATED_BY, String lkpName) {
Long rowInserted = (long) 0;
boolean fg = true;
connection = dbConnection.connectDB();
if (connection == null) {
fg = false;
}
if (fg) {
try {
st = connection.createStatement();
String insertQuery = "";
String insertQuery2 ="";
Long PK_NOa = generatedSequenceNumber("SEQ_SA_PREFIX_SETUP", COMPANY_NO);
for (int i = 0; i < CHACK_STATUS.length(); i++) {
String lkpDataIdcheckboxArr[] = CHACK_STATUS.split(",");
String LKPGRP_IDArr[] = LKPGRP_ID.split(",");
String LKPDATA_ID_PREFIXArr[] = LKPDATA_ID_PREFIX.split(",");
String LKPDATA_IDArr[] = LKPDATA_ID.split(",");
//String lkpNameArr[] = lkpName.split(",");
if(lkpDataIdcheckboxArr[i].trim().equals("1")){
String PK_NO = generatedSequence("", "SEQ_HPMSINTAKEOUTPUT",
"D", "1", "Y");
insertQuery = "INSERT INTO SA_PREFIX_SETUP (LKPGRP_ID, COMPANY_NO, PREFIX_SETUP_ID, CREATED_BY, LKPDATA_ID_PREFIX, LKPDATA_ID, CREATED_DT, CHACK_STATUS "
+ ")values('"
+ LKPGRP_IDArr[i]
+ "','"
+ COMPANY_NO
+ "',"
+ PK_NOa
+ ",'"
+ CREATED_BY
+ ",'"
+ LKPDATA_ID_PREFIXArr[i]
+ ",'"
+ LKPDATA_IDArr[i]
+ "',sysdate,'"
+ lkpDataIdcheckboxArr[i] + "')";
}
}
System.out.println(insertQuery);
st.executeUpdate(insertQuery);
} catch (Exception ex) {
ex.printStackTrace();
} finally {
try {
st.close();
connection.close();
} catch (SQLException ex) {
ex.printStackTrace();
}
}
}
return rowInserted;
}
答案 0 :(得分:0)
循环从0迭代到CHACK_STATUS
的长度(这是一个字符串)
for (int i = 0; i < CHACK_STATUS.length(); i++)
然后在循环内部将这个tring分成一个元素表
String lkpDataIdcheckboxArr[] = CHACK_STATUS.split(",");
然后代码从此表中检索值:
if(lkpDataIdcheckboxArr[i].trim().equals("1")){
也在这里:
+ lkpDataIdcheckboxArr[i] + "')";
现在假设CHACK_STATUS =“1,0,1”
该变量的长度为:CHACK_STATUS.length()= 5.
如果您拆分此字符串:lkpDataIdcheckboxArr[] = CHACK_STATUS.split(",")
,您将获得一个包含3个元素的表:lkpDataIdcheckboxArr[] = {"1","0","1"}
现在循环迭代(i <5):0 ... 1 ... 2 .... 3
和 BANG - if(lkpDataIdcheckboxArr[i].trim().equa...
for i = 3 throws IndexOutOfBoundException
因为lkpDataIdcheckboxArr只有3个元素[0],[1]和[2],元素[3]不存在!