我需要将用户给定的参数传递给java方法。
我有一个控制器类,两个JSP,一个index.jsp和bresult.jsp,我需要的是在索引页面上:用户可以提供输入,并通过“添加”按钮调用需要该方法的java方法。参数。
在我的控制器中:
@Autowired
public void setA(Scheduler schedulerObject) {
this.schedulerObject = schedulerObject;
}
@GetMapping("/")
public String index() {
return "index";
}
@PostMapping("/bresult")
public String bresult(@RequestParam("newMachineType") String newMachineType, Model model) throws InterruptedException
{
schedulerObject.loadDataBase();
schedulerObject.createDefaultMachines();
some other codes here...
return "bresult";
}
index.jsp:
<form action="bresult" method="post">
<table>
<tr>
<td>Enter new machine type:</td>
<td><input id="newMachineType" name ="newMachineType"></td>
<td><input type="submit" value="Submit"/></td>
</tr>
</table>
</form>
因此在索引中,如果我要添加任何新计算机,则在输入类型后,将按钮添加到列表中,如果单击“提交”,它将基于其他代码给出结果。
我如何调用参数(机器类型)并将其传递给我的java方法,但前提是我必须单击添加按钮?
答案 0 :(得分:0)
您的操作正确指向了您的方法
<form action="bresult" method="post">
@PostMapping("/bresult")
您的参数(以html格式)在控制器中使用相同的名称
<td><input id="newMachineType" name ="newMachineType"></td>
@RequestParam("newMachineType") String newMachineType
这不起作用吗?您可以在控制器类中正常使用String。您在课堂上使用@Controller吗?尝试System.out.println(newMachineType)并在控制台中查看以验证该变量的值,并检查是否与html中传递的相同。
答案 1 :(得分:0)
更改您的发布方法,以使用HttpServletRequest
获取表单值作为参数。
https://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletRequest.html
@PostMapping("/bresult")
public String bresult(HttpServletRequest request, Model model) throws InterruptedException
{
// ----
String newMachineType = request.getParameter("newMachineType");
...
// If more than one parameter for machine type
String newMachineType2 = request.getParameter("newMachineType2");
String newMachineType3 = request.getParameter("newMachineType3");
String newMachineType4 = request.getParameter("newMachineType4");
...
// ----
schedulerObject.loadDataBase();
schedulerObject.createDefaultMachines();
some other codes here...
return "bresult";
}
用于多个动态实体。您可以更改html的方法:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js">
</script>
<script>
$(document).ready(function(){
var counter = 0;
$( "#addButton" ).click(function() {
$('body > form > table > tbody > tr > td:nth-child(2)').after('<td><input id="newMachineType" name ="newMachineType' + counter + '"></td>');
counter++;
});
});
</script>
<button id="addButton" type="button">Add new machine type</button>
<form action="bresult" method="post">
<table>
<tr>
<td>Enter new machine type:</td>
<td><input type="submit" value="Submit"/></td>
</tr>
</table>
</form>
为新机器的添加按钮编辑了HTML。因此,您可以添加所需的数量。
然后提交所有内容并从bresult()