当我尝试request.getParameter(SPLIT_ACTION)时,我得到一个空值。这仅适用于Chrome,并且在IE的情况下工作正常。 SPLIT_ACTION是一个常量字符串,其值为“Split”。
这是我的代码行:
<td><button onClick="window.location = '<%=request.getRequestURI() %>?action=<%=SPLIT_ACTION%>&composite=<%=vitalDef.getSyncId() %>';">Split</button></td>
非常感谢任何帮助。
<form method="POST" action="<%=request.getRequestURI() %>">
<table width="100%">
<tr>
<th colspan="2">Vital Name</th>
<th>Abbreviation</th>
<th>Back-end ID</th>
<th>Sort Order</th>
</tr>
<tr>
<td width="25"></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr class="compositeheader">
<td colspan="2">COMPOSITE: <input type="text" name="name_<%=vitalDef.getId()%>" value=" <%=vitalDef.getName() %>"/></td>
<td><input type="text" name="abbrev_<%=vitalDef.getId()%>" value="<%=vitalDef.getAbbrevName() %>"/></td>
<td><button onClick="window.location = '<%=request.getRequestURI() %>?action= <%=SPLIT_ACTION%>&composite=<%=vitalDef.getSyncId() %>';">Split</button></td>
<td align="right">
<input type="text" name="sortorder_<%=vitalDef.getId()%>"
value="<%=sortKeys.get(vitalDef) %>"/>
</td>
</tr>
<tr class="compositerow" id="comprow_<%=component.getId() %>">
<td style="background-color: #ffffff"></td>
<td><%=beDef.getName() %></td>
<td><%=beDef.getAbbrevName() %></td>
<td></td>
<td align="right">
<input type="text" name="compsortorder_<%=vitalDef.getId()%>_<%=component.getId()%>"
value="<%=component.getSortOrder() %>"/>
</td>
</tr>
<tr class="vitaldef <%= counter % 2 == 0 ? "even" : "odd" %>" id="vitaldef_<%=vitalDef.getId() %>">
<td colspan="2"><input type="text" name="name_<%=vitalDef.getId()%>" value="<%=vitalDef.getName() %>"/></td>
<td><input type="text" name="abbrev_<%=vitalDef.getId()%>" value="<%=vitalDef.getAbbrevName() %>"/></td>
<td><%=backendName%></td>
<td align="right">
<input type="text" name="sortorder_<%=vitalDef.getId()%>"
value="<%=sortKeys.get(vitalDef) %>"/>
</td>
</tr>
<script type="text/javascript">
$('vitaldef_<%=vitalDef.getId()%>').vitalDefId = <%=vitalDef.getId()%>;
new Draggable('vitaldef_<%=vitalDef.getId()%>',{revert:true, ghosting: true});
Droppables.add('vitaldef_<%=vitalDef.getId()%>',
{'accept': 'vitaldef', 'hoverclass': 'droptarget',
'onDrop': function (toMerge, me) {
window.location = "<%=request.getRequestURI() %>?action=<%=MERGE_ACTION%>&item1=" + me.vitalDefId + "&item2=" + toMerge.vitalDefId;
}
});
</script>
<tr>
<td colspan="3">
<td align="right">
<input type="submit" name="action" value="<%=RESORT_ACTION %>" onclick="return verifyFields();"/>
</td>
</tr>
</table>
</form>
答案 0 :(得分:1)
您的代码存在问题,您必须添加return false;
以及onClick
标记<button>
方法的结尾,如下所示。
<button onClick="window.location ='<%=request.getRequestURI() %>?action=<%=SPLIT_ACTION%>&composite=<%=vitalDef.getSyncId() %>';return false;">Split</button>
如果没有return false;
提交表单,因为没有名称为Split的输入组件,您将获得null。
您使用request.getParameter(SPLIT_ACTION)
表示request.getParameter("Split")
,但没有名为'Split'
的参数,这就是您获得null
的原因。如果您希望'action'
参数使用request.getParameter("action")
此外,您必须小心使用<button>
代码,IE和Chrome在<button>
代码的情况下采取不同的行动。
<button name='action' value='add'>Add</button>
在上面的示例中,request.getParameter("action");
在IE中返回Add
,在Google Chrome中返回add
。
因此,解决方法是您必须为按钮标记的属性value
和按钮标记的正文提及相同的值。
应该是。
<button name='action' value='Add'>Add</button>