美好的一天!
我想将我的代码转换为STRUTS ..我尝试不在我的Action类中使用getParameter。 但是我不能在不使用getParameter的情况下将信息从JSP传递给Action Class。
JSP:
<html:form action="EditExam">
<input type = "hidden" name = applicantNumber value="${applicantForm.applicantNumber}" >
<table>
<c:forEach var="exam" items="${examList}">
<input type = "hidden" name ="examId" value="${exam.examId}" >
<tr>
<td>Exam Type:  </td> <td><input type="text" value="${exam.examName}" name="examType" readonly ="true"></td>
</tr>
<tr>
<td>Date: </td> <td><input type="text" value="${exam.examDate}" name="examDate" class="date"></td>
</tr>
<tr>
<td>Result: </td>
<td>
<select name = examResult>
<option value="Pass" ${exam.examResult == 'Pass' ? 'selected' : ''}>Pass</option>
<option value="Fail" ${exam.examResult == 'Fail' ? 'selected' : ''}>Fail</option>
<option value="" ${exam.examResult == '' ? 'selected' : ''}></option>
</select>
</td>
</tr>
<tr><td> </td><td>  </td></tr>
</c:forEach>
</table>
<input type="submit" class="saveButton" value="SAVE">
</html:form>
行动类:
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
// TODO Auto-generated method stub
String forward = "success";
ApplicantForm applicantForm = (ApplicantForm)form;
int applicantNumber = applicantForm.getApplicantNumber();
String examDate[] = request.getParameterValues("examDate");
String examResult[] = request.getParameterValues("examResult");
String examId[] = request.getParameterValues("examId");
//MORE CODES AFTER...
我的问题是: 如何在不使用get参数的情况下将数据从JSP传递给Action Class。
考虑:
您的回复将受到高度赞赏。谢谢。
答案 0 :(得分:2)
你做不到。您可以使用HTTP协议将数据从浏览器(html,jsp的结果)传输到服务器,该协议仅传输文本请求参数。
所以你必须使用request.getParameter[Values](..)
。如果您需要List
,则可以使用Arrays.asList(array)
。
我认为struts应该有某种形式的绑定,所以无论你在哪里指定输入参数,你都可以尝试指定List
,也许struts会填充它。 (但它仍然会在引擎盖下使用request.getParameterValues(..)
答案 1 :(得分:2)
HTML / JSP不了解列表等java对象。它们只处理纯字符串/数字或字节流。
所以你必须使用
request.getParameter("paramName");
或者如果您需要地图,可以使用
Map < String, String[] > queryParamsMap = (Map < String, String[] > )request.getParameterMap();
从地图中,您可以直接获取特定参数的数组。通过使用例如
String[] paramArray = queryParamsMap.get("myParam");