提交表单而不刷新Spring MVC中的页面

我有一个listbox2,它根据listbox1中选择的内容进行填充。因此,当我提交表单时,我丢失了listbox2的数据,必须再次在listbox1中重新选择。提交后如何将数据保存在listbox2中?

<form:form action="choseElement" method="post"> 

<select name="listbox1">

<j:forEach items="${elementList}" var="elem">

<option>${elem.name}</option>

</j:forEach>

</select>

</form:form>

<form:form action="addProduct" method="post">

<input type="text" name="nameProd">

<select name="listbox2">

<j:forEach items="${LPbyElement}" var="lp">

<option>${lp.name}</option>

</j:forEach>

</select>

</form:form>

回答:

当我提交表单时,我丢失了listbox2的数据,必须再次在listbox1中重新选择。

您还没有提到如何绑定表单数据并从jsp传递到控制器,而是考虑使用如下所示的模型bean:

ProductBean类用于保存表单数据:

public class ProductBean {

private String listbox1Selected;

private String listbox2Selected;

//no-arg constructor, getters and setters

}

用于在列表框或选择框中加载选项的选项类:

public class Option {    

private String name;

public Option(){}

public Option(String name) {

super();

this.name = name;

}

}

并在jsp中使用如下所示的方法在表单提交后获得所选选项:

<form:form method="post" modelAttribute="productBean">

<label for="listbox1">listbox1:</label>

<form:select path="listbox1Selected">

<option value="NONE">--listbox1--</option>

<form:options items="${listbox1Options}" itemValue="name" itemLabel="name"/>

</form:select>

<label for="listbox2">listbox2:</label>

<form:select path="listbox2Selected">

<option value="NONE">--listbox2--</option>

<form:options items="${listbox2Options}" itemValue="name" itemLabel="name"/>

</form:select>

<input type="submit" />

</form:form>

并在控制器中返回弹簧传递给POST参数的产品模型bean。

@Controller

@RequestMapping("/selectBox")

public class SelectBoxController {

@RequestMapping(method=RequestMethod.GET)

public String showSelectBox(Model model){

model.addAttribute("productBean", new ProductBean());

return "selectBox";

}

@RequestMapping(method=RequestMethod.POST)

public String showSelectBox(@ModelAttribute("productBean")ProductBean productBean, BindingResult result, ModelMap model){

System.out.println(productBean);

model.addAttribute("productBean", productBean);

return "selectBox";

}

@ModelAttribute("listbox1Options")

public List<Option> populateOpt(){

List<Option> lst = new ArrayList<Option>();

lst.add(new Option("Op1"));

lst.add(new Option("Op2"));

lst.add(new Option("Op3"));

return lst;

}

@ModelAttribute("listbox2Options")

public List<Option> populateOpt2(){

List<Option> lst = new ArrayList<Option>();

lst.add(new Option("Op4"));

lst.add(new Option("Op5"));

lst.add(new Option("Op6"));

return lst;

}

}

以上是 提交表单而不刷新Spring MVC中的页面 的全部内容, 来源链接: utcz.com/qa/417611.html

回到顶部