Spring MVC,点击一下按钮,返回一个字符串值

时间:2017-02-28 14:07:32

标签: java spring-mvc

我仍然相对较新的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";
  }
}

1 个答案:

答案 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();
     });