struts-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Laurie Harper <lau...@holoweb.net>
Subject Re: Validator framework hijacks requests! :(
Date Sun, 13 Nov 2005 01:24:37 GMT
The trick is to only include validation on the data processing actions, 
not on the pre-display actions (i.e. use validate="false" on your 
preCreate action mapping, and only put validate="true" on the action you 
submit the form to). Then set the 'input' attribute for your validating 
actions to point to the pre-population action (so when validation fails, 
Struts forwards to preCreate, not directly to the JSP).

You don't need to use session scope for anything if you don't want to, 
you just have to make sure that you always display your JSP via your 
preCreate action.

If that doesn't make sense, post your action mappings from 
struts-config.xml so we can see how you have things setup.

L.

Raghu Kanchustambham wrote:
> I think I can explain it now.
>  I hit the action servlet first invoking preCreate function. This function
> populates various lists of beans needed for dropdowns and put these lists in
> the request object and forward to a JSP. The JSP reads these lists and
> displays the dropdowns. So far so good!
>  preCreate --->request object populated with lists ---> JSP reads from
> request for dropdown lists
>  Now... enter the Validation framework! I think it is hijacking this series!
> 
>  preCreate ---> request populated with lists ---> Validator framework --->
> JSP
>  Now the jump from Validator framework to JSP means that all request scope
> objects (the lists) are lost! :(
>  How should I architect ? Should I make these lists session scope? I somehow
> dont like to make them session scope, because they are really request scope!
> 
>  Can someone comment on my explanation / help me with a solution ??
>   Thanks much.
> Regards,
> Raghu
> 
> 
>  On 11/12/05, Martin Gainty <mgainty@hotmail.com> wrote:
> 
>>I didnt see the contents E.G. <tag> </tag> for your c.tld ??
>>Martin-
>>----- Original Message -----
>>From: "Raghu Kanchustambham" <kraghu@gmail.com>
>>To: "Struts Users Mailing List" <user@struts.apache.org>
>>Sent: Saturday, November 12, 2005 10:37 AM
>>Subject: Re: Fw: Validator framework introduces errors
>>
>>
>>Hi Martin,
>>I do something like:
>>request.setAttribute("centreList",DataAccessManager.getCentres());
>>before invoking the jsp.
>>The strange part is, the minute i remove validation.xml from the validator
>>path, effectively removing the validation framework, every thing works
>>just
>>fine! Just cant explain it ! :(
>>Thanks again in advance to anyone who can explain this!
>>Please find the StudentEnquiry.jsp attached.
>>----------------------------------------
>>
>><%@ page import="
>>com.tuningfork.student.businessobject.enquiry.StudentEducationDetail"%>
>><%@ page language="java" %>
>><%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
>><%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
>><%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
>><%@ taglib uri="/WEB-INF/c.tld" prefix="c" %>
>><%@ taglib uri="/WEB-INF/struts-layout.tld" prefix="layout" %>
>>
>><layout:html>
>><head>
>><title>Student Enquiry</title>
>>
>><link rel="stylesheet" type="text/css" href="../mystyle.css" />
>><SCRIPT>function set(target) {document.forms
>>[0].operation.value=target;}</SCRIPT>
>></head>
>><body>
>><h2>Student Enquiry</h2>
>><html:errors/>
>><c:set var="operationVar">
>><%= request.getParameter("nextOperation")%>
>></c:set>
>>
>><c:set var="readOnlyForm"> false </c:set>
>>
>><c:if test="${operationVar=='null' || operationVar=='ok'}"> <!-- view
>>doesnt
>>have a Next operation -->
>><c:set var="readOnlyForm"> true </c:set>
>></c:if>
>><html:form action="StudentEnquiry.do"
>>onsubmit="validateStudentEnquiryForm(this);">
>><input type="hidden" name="operation"
>>value="<%=request.getParameter("nextOperation")%>"
>>/>
>><table width="100%">
>><tr>
>><td rowspan="2">
>><%@include file="StudentDemographics.jsp"%>
>></td>
>><td>
>><layout:grid cols="2">
>><layout:select property="enquiryCentreId" size="${selectBoxSize}"
>>key="Enquiry Centre">
>><layout:options collection ="centreList" property="id" labelName="name" />
>></layout:select>
>><layout:select property="enquiryCourseId" size="${selectBoxSize}"
>>key="Enquiry Course">
>><layout:optionsCollection name="courseList" value="id" label="name"/>
>></layout:select>
>></layout:grid>
>>
>></td>
>></tr>
>>
>>
>><tr>
>><td>
>></td>
>><td align="center">
>><html:submit>${operationVar} </html:submit>
>><html:cancel>cancel</html:cancel>
>></td>
>></tr>
>>
>></table>
>>
>>
>></html:form>
>>
>></body>
>></layout:html>
>>------------------------------------------------
>>
>>
>>On 11/12/05, Martin Gainty <mgainty@hotmail.com> wrote:
>>
>>>I did'nt see the (StudentEnquiry.jsp) jsp page which references
>>
>>centreList
>>
>>>bean?
>>>I also dont see the code for centreList bean?
>>>
>>>Martin-
>>>
>>>----- Original Message -----
>>>From: "Raghu Kanchustambham" <kraghu@gmail.com>
>>>To: "Struts Users Mailing List" <user@struts.apache.org>
>>>Sent: Saturday, November 12, 2005 9:40 AM
>>>Subject: Validator framework introduces errors
>>>
>>>
>>>Hi,
>>>The minute I introduced Validator framework in my application .....
>>>it started giving me the following error when I accessed the JSP ....
>>>centreList is used as a parameter for the dropdown. The minute I remove
>>>the
>>>validation.xml from the path... the application runs fine again! :(
>>>very strange and i am not able to explain this behavior .. can someone
>>>help?
>>>Thanks much in advance.
>>>Regards,
>>>Raghu
>>>
>>>javax.servlet.jsp.JspException: Cannot find bean centreList in any scope
>>>org.apache.struts.util.RequestUtils.lookup(RequestUtils.java:938)
>>>fr.improve.struts.taglib.layout.field.OptionsCollectionTag.doStartTag(
>>>OptionsCollectionTag.java:115)
>>>
>>>
>>
>>org.apache.jsp.student.StudentEnquiry_jsp._jspx_meth_layout_optionsCollection_0
>>
>>>(StudentEnquiry_jsp.java:1088)
>>>org.apache.jsp.student.StudentEnquiry_jsp._jspx_meth_layout_select_2
>>>(StudentEnquiry_jsp.java:1062)
>>>org.apache.jsp.student.StudentEnquiry_jsp._jspx_meth_layout_grid_1
>>>(StudentEnquiry_jsp.java:1028)
>>>org.apache.jsp.student.StudentEnquiry_jsp._jspService
>>>(StudentEnquiry_jsp.java:258)
>>>
>>>
>>>
>>>
>>>
>>>My validation.xml (very simple one):
>>>
>>><!DOCTYPE form-validation PUBLIC
>>>"-//Apache Software Foundation//DTD Commons Validator Rules
>>>Configuration 1.0//EN"
>>>"http://jakarta.apache.org/commons/dtds/validator_1_0.dtd">
>>>
>>>
>>><form-validation>
>>><formset>
>>><form name="studentEnquiryForm">
>>><field property="studentEnquiry.firstName" depends="required">
>>><arg0 key="firstName.mandatory"/>
>>></field>
>>></form>
>>></formset>
>>></form-validation>
>>>
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


Mime
View raw message