我仍然相对较新的springMVC,我目前有一些代码,它将从jsp页面上的<form:input>
获取输入,并根据输入创建不同的列表(假设我输入正确的字符串) 。我想把它转换成一个按钮,所以我可以有四个按钮返回一个不同的字符串,例如&#34;一个&#34;,&#34;两个&#34;,&#34;三个&# 34;和&#34;四&#34;。这样,用户无需打字。
我看到有<form:button>
可用,但我不知道如何从中返回String值。我也研究过angularJS,看到你可以调用onClick函数。但同样,我不知道将它绑定到我的控制器的实现是什么。我只是不确定如何实现这一点。任何帮助,将不胜感激。
这就是我目前正在实施的内容:
<form:form commandName="input">
<label>Enter Value</label>
<form:input path="listType" class="inputbox" />
<br>
<input type="submit" class="button" value="Enter" />
</form:form>
这会获取输入并将其存储在对象中:
@Controller
@SessionAttributes("input")
public class EventController {
@RequestMapping(value = "/event", method= RequestMethod.GET)
public String displayEvent (Model model) {
AccessInput userInput = new AccessInput();
model.addAttribute("input", userInput);
System.out.println("finished get method");
return "event";
}
@RequestMapping(value = "/event", method= RequestMethod.POST)
public String processEvent(@ModelAttribute("input")AccessInput userInput) {
System.out.println(userInput.getListType()); //just so I know what value it has
return "redirect:results.html";
}
这是根据我传递给对象的字符串创建列表的控制器
@RestController
@SessionAttributes("input")
public class ReportController {
@RequestMapping(value="/events")
public List<Appliance> getEvents(@ModelAttribute("input")AccessInput userInput) {
List<Appliance> events = new ArrayList<>();
events = ProcessChoice.ofList(userInput.getListType());
System.out.println(userInput.getListType());
return events;
}
}
修改
请注意我已经解决了这个问题,我按照Vipin Dubey给出的例子,我不得不改变我的控制器。我删除了POST方法并添加了@RequestParam
作为参数,并将event.jsp
上的按钮重定向到"results.html?input=one"
然后获取此值并将其添加到我的模型中以将其存储在会话。
@Controller
@SessionAttributes("URLparam")
public class ResultController {
@RequestMapping(value = "/results.html", method = RequestMethod.GET)
public String buttonSelect(Model model, @RequestParam("input")String input) {
model.addAttribute("URLparam", input);
System.out.println(input);
return "result";
}
}
答案 0 :(得分:0)
您有两种选择: 1.简短推荐方式: 使用链接并将其设置为按钮,您可以直接调用控制器
<a class="btn" href="/events?input=one">One</a>
<a class="btn" href="/events?input=two">two</a>
<a class="btn" href="/events?input=three">three</a>
<a class="btn" href="/events?input=four">four</a>
2。使用jQuery或JavaScript使用表单中隐藏的输入字段
基于单击的按钮提交表单 <!-- Buttons with classes -->
<div id="target">
<button class="one">One</button>
<button class="two">two</button>
<button class="three">three</button>
<button class="four">four</button>
</div>
<!-- Your form -->
<form:form commandName="input" id="myForm">
<input type="hidden" name="inputbox" id="inputbox" value=""/>
</form:form>
// You will have to do this for each of the button which is not a recommended way
$( ".one" ).click(function() {
$('input[name="inputbox"]').val("one");
//var a = $('input[name="inputbox"]').val();
//alert(a);
$( "#myForm" ).submit();
});