不能向servlet发送正确的密钥
Cant send the right key to the servlet
我似乎无法在我的web应用程序中发送正确的实体键给servlet。我使用javascript方法通过按钮提交带有数据的表单。代码分为jstl代码:
<c:if test="${!empty MOFornecedorList}">
<div id="RightColumn">
<%-- Search Box --%>
<div class="searchform">
<form id="formsearch" name="formsearch" method="post" action="<c:url value='FProcurar'/>">
<span>
<input name="searchBox" class="editbox_search" id="editbox_search" size="80" maxlength="100" value="Pesquisa" type="text" />
</span>
<input name="btnsearch" class="button_search" value="Pesquisa" type="button"/>
</form>
<div class="clr"></div>
<h>Criterio de Pesquisa: </h>
<select name="Type">
<option value="1">ID</option>
<option value="2">Nome</option>
<option value="3">Email</option>
<option value="4">Fax</option>
<option value="5">Endereço</option>
</select>
</div>
<%-- END Search Box --%>
<div class="clr"></div>
<table id="ProductTable" class="detailsTable">
<tr class="header">
<th colspan="9" >Modificar Fornecedor</th>
</tr>
<tr class="tableHeading">
<td>ID</td>
<td>Nome</td>
<td>Endereço</td>
<td>Nº de Celular</td>
<td>Nº de Telefone</td>
<td>Email</td>
<td>Fax</td>
<td>Descrição</td>
<td></td>
</tr>
<c:forEach var="MOForn" items="${MOFornecedorList}" varStatus="iter">
<tr class="${'white'} tableRow">
<td>${MOForn.getFid()}</td>
<td>${MOForn.getFNome()}</td>
<td>${MOForn.getFEndereco()}</td>
<td>${MOForn.getFNCel()}</td>
<td>${MOForn.getFNTel()}</td>
<td>${MOForn.getFEmail()}</td>
<td>${MOForn.getFFax()}</td>
<td>${MOForn.getFDescricao()}</td>
<td>
<form action="<c:url value='FMOb'/>" method="post" name="FModifi">
<input type="hidden"
name="MOForn"
value="${MOForn.fid}">
<input type="button"
value="Modificar" onclick="ModF()">
</form>
</td>
</tr>
</c:forEach>
</table>
</div>
</c:if>
javascript方法
function ModF() {
jConfirm('Modificar o Fornecedor?', 'Confirmação', function(r) {
if (r == true) {
$("form[name='FModifi']").submit();
} else {
return false;
}
});
}
和控制器代码:
//Check if fornecedor as been selected
int Fid = Integer.parseInt(request.getParameter("MOForn"));
//Get fornecedor object and set it to variable
Forn = transManager.getEnt(Fid,"fornecedor");
request.setAttribute("Forn",Forn);
PagesInF="FModificar";
request.setAttribute("PagesInF", PagesInF);
userPath = "/Fornecedor";
现在,当我测试代码时,jstl将按升序读取MOFornecedorList项中的5条记录,并在最后一列中创建一个按钮。
当按钮被按下时,例如在第三条记录中,JavaScript方法Modf()被调用,并显示一个确认对话框。
当用户按下OK按钮时,表单FModifi被提交。
然后servlet将接收打开页面FMOb的请求,其中按下按钮的隐藏输入将被检索并放入变量类型int中,并执行一些其他代码。
但是表单提交的值是错误的。例:
1 - button - moform = 12 - button - moform = 2
3 - button - moform = 3 (click)
4 - button - moform = 4
5 - button - moform = 5
Form发送的值应该是3,但是发送的值是5。
所以如果有人有任何想法请分享
您有多个具有相同名称的表单。你的JS函数并没有提交调用它的表单,而是提交了在HTML DOM树中最后一次出现该名称的表单。
你需要替换
<input type="button" value="Modificar" onclick="ModF()">
<input type="button" value="Modificar" onclick="confirmSubmit(this.form)">
,重写如下:
function confirmSubmit(form) {
jConfirm('Modificar o Fornecedor?', 'Confirmação', function(confirmed) {
if (confirmed) {
form.submit();
}
}
}
我还建议使用更多的自文档变量和函数名称,如上面所示,这样你的代码更容易理解和维护在长期(不仅为你自己,但也为别人,例如那些在Stackoverflow.com从谁你期望一个答案,当你发布一个问题…)
相关文章:
- API密钥使用和检查示例
- react.js中的密钥绑定
- JS对象密钥序列
- 似乎无法使用javascript从AWS 3S中删除密钥
- 加载两个具有相同父密钥名称的json文件
- 如何获取$data.Entity的密钥
- Angular ngRepeat:重复错误(尽管没有重复的密钥)
- CryptoJS和密钥/IV长度
- 基于api密钥的NodeJS web服务
- 输入密钥和firefox提示
- React Rails应用程序中动态子项的密钥分配问题
- 正在Javascript Cookie中设置重复密钥
- 通过localStorage中的密钥获取ID
- 从密钥中获取价值.JavaScript
- Javascript对象中的跨浏览器密钥查找性能
- D3动态json密钥名称
- OAuth 2.0 OpenID连接环回和密钥斗篷
- 从ng条消息中提取ng条消息密钥
- javascript和具有唯一密钥的es6过滤器数组
- 不能向servlet发送正确的密钥