我尝试为一种形式使用“类型”为“ button”的多个输入字段。波纹管是一个代码:
<input type="button" name="submitButton" value="Validate" style="margin-right:5px" onclick="
doConfirm('<%=prop.getProperty("message.dialog.DatabasePage.OnlyValidation")%>',
function yes() {
$('#myForm').submit();
},
function no() {
},
validateForm()
);
form.action='/validate-configuration';
"/>
<input type="button" name="submitButton" value="Obfuscate" style="margin-left:5px" onclick="
doConfirm('<%=prop.getProperty("message.dialog.DatabasePage")%>',
function yes() {
$('#myForm').submit();
},
function no() {
},
validateForm()
);
form.action='/validate-configuration';
我想知道在弹簧控制器中单击了什么按钮:
@PostMapping("/validate-configuration")
public String startValidate(@RequestParam("configuration") UUID configurationId,
@RequestParam String dataSourceId,
@RequestParam String schema,
@RequestParam String password,
@RequestParam(name = "submitButton") String submitButton,
@RequestParam(name = "hashing_salt", defaultValue = "") String hashingSalt,
HttpSession session,
Map model) {...}
但是出现错误:“ org.springframework.web.bind.MissingServletRequestParameterException:所需的字符串参数'submitButton'不存在”。我想知道是否可以在HTML输入标签(类型“按钮”)中使用spring注释@RequestParam? 请不要使用“提交”类型,而要使用“按钮”类型。如果我将使用“提交”类型,则我的确认对话框将无法使用。 我会感谢您的想法。
答案 0 :(得分:0)
因为@RequestParam不适用于HTML输入标签(类型为“按钮”),所以我决定使用一些技巧。我们可以将type =“ text”和style =“ visibility:hidden;”添加到html标记输入标签中。并通过该字段传递所需的值。 HTML:
<tr>
<td>
<input type="button" name="submitButton" value="Validate" style="margin-right:5px" onclick="
doConfirm('<%=prop.getProperty("message.dialog.DatabasePage.OnlyValidation")%>',
function yes() {
$('#myForm').submit();
},
function no() {
},
validateForm()
);
$('#validationRequired').val(true);
form.action='/validate-configuration';
"/>
<input type="button" name="submitButton" value="Obfuscate" style="margin-left:5px" onclick="
doConfirm('<%=prop.getProperty("message.dialog.DatabasePage")%>',
function yes() {
$('#myForm').submit();
},
function no() {
},
validateForm()
);
$('#validationRequired').val(false);
form.action='/validate-configuration';
"/>
</td>
<td>
<input id="validationRequired" type="text" name="validationRequired" style="visibility: hidden;"></input>
</td>
<td> </td>
</tr>
Spring控制器:
@PostMapping("/validate-configuration")
public String startValidate(@RequestParam("configuration") UUID configurationId,
@RequestParam String dataSourceId,
@RequestParam String schema,
@RequestParam String password,
@RequestParam String validationRequired,
@RequestParam(name = "hashing_salt", defaultValue = "") String hashingSalt,
HttpSession session,
Map model) {...}
该解决方案有效,但可能不会更好(安全性降低)。