问题描述:

I have the following code in the controller

 private static final String CJOB_MODEL = "cJobNms";

@RequestMapping(value = MAIN_VIEW, method = RequestMethod.POST)

public String showTestXsd(//@ModelAttribute(FORM_MODEL) TestXsdForm xsdForm,

//@ModelAttribute(MODEL) @Valid

//TestXsdTable testXsdTable,

@RequestParam String selected,

Model model) throws DataException {

String cJobNm =null;

List<String> cJobNmList = null;

System.out.println("selected:"+ selected);

String xsdView = testXsdService.getXsdString();

cJobNmList = testXsdService.getCJobNm();

Set<String> cJobNmSet = new HashSet<String>(cJobNmList);

TestXsdForm xsdForm = new TestXsdForm();

model.addAttribute("xsdView", xsdView);

model.addAttribute("xsdFormModel", xsdForm);

model.addAttribute(CJOB_MODEL, cJobNmSet);

xsdForm.setXsdString(xsdView);

return MAIN_VIEW;

}

And the following code in my jsp.

<form:form modelAttribute="testXsdTable" name="xsdForm" action="/xsdtest/testXsdTables"

id="xsdForm" method="POST" class="form"

enctype="multipart/form-data" >

<tr>

<td>

<label for="cJobs" class="fieldlabel">Jobs:</label>

<select id="cJobs" name="cJobs" >

<option value="${selected}" selected>${selected}</option>

<c:forEach items="${cJobNms}" var="table">

<c:if test="${table != selected}">

<option value="${table}">${table}</option>

</c:if>

</c:forEach>

</select>

</td>

</tr>

<pre>

<c:out value="${xsdForm.xsdString}"/>

</pre>

<div class="confirmbuttons">

<a href="#"class="button positive" id="saveXsdButton" onclick="saveTestXsd();">

<span class="confirm">Save</span>

</a>

</div>

When the user selects an option from the cJobNms list the selected value should be displayed in the controller method showTestXsd. Please let me know what I am doing wrong.

Currently I am getting a message : Request method 'GET' not supported

 @RequestMapping(value = SAVE_VIEW, method = RequestMethod.POST)

public String saveTestXsd( @ModelAttribute(MODEL) @Valid

TestXsdTable testXsdTable,

final BindingResult result,

final Principal principal,

Model model) throws DataException {

boolean isNew = true;

System.out.println("entering saveTestXsd in controller");

Map<String,Object> modelMap = model.asMap();

String xsdView = (String)modelMap.get("xsdView");

System.out.println("xsdView:::"+ xsdView);

if(testXsdTable!= null){

System.out.println("xsdView(testXsdForm):::"+ testXsdTable.getXsdView());

}

// Check for validation errors

if (result.hasErrors()) {

return SAVE_VIEW;

}

// Get the user information

User loggedInUser = (User) ((Authentication) principal)

.getPrincipal();

return SAVE_VIEW;

}

网友答案:

I'm going to start an answer and add to it as details become available. For your current comment of

An application error has occured org.springframework.web.bind.MissingServletRequestParameterException: Required S tring parameter 'selected' is not present

This happens because when you have something like

@RequestParam String selected,

And @RequestParam doesn't have a value attribute set, Spring will use the name of the parameter to look for the request parameter to bind. In your form, you obviously don't have a parameter named selected. What you want is to get the value in

<select id="cJobs" name="cJobs" >

So change your @RequestParam to

@RequestParam(value = "cJobs") String selected

to match the name attribute of the select input element.

网友答案:

Replace

@RequestMapping(value = MAIN_VIEW, method = RequestMethod.POST)

with

@RequestMapping(value = MAIN_VIEW, method = RequestMethod.GET)

You should also consider changing the form POST method. Your use case is more of Get rather than POST

网友答案:

use the next code

@RequestMapping(value = MAIN_VIEW, method = RequestMethod.GET)
//if you want to use both ( post and get ) remove Request Method annotation

//@RequestMapping(value = MAIN_VIEW)
@RequestParam(value="cJobs", required = false) String selected; 
//use this to handle an optional parameter
网友答案:

You just have make a change in @RequestParam which you have used in your code like

@RequestParam("studentName") String name

Replace above line of code with

@RequestParam(value="studentName") String name

Your problem will definitely be resolved.

相关阅读:
Top