Details
Description
In my multi-step form wizard, hidden form fields may be a bad idea for security
reasons. Therefore, I keep a copy of the form in the session and incrementally
add the values gathered from the browser.
There arose even a scenario where it was advisable to set some values in that
form even without first doing a PropertyUtils.copyProperties from a form coming
from a browser. A subsequent .validate() then causes the above nullPointer
exception.
Suggestion:
When doing the
ServletContext application = getServlet().getServletContext();
in the ValidatorForm, first test whether the "getServlet()" really returns other
than null and otherwise return a decent error message.
I am not fully clear why the problem arises, but I guess that ValidatorForm()
not having a constructor method is part of the reason for this.
Anyway, I got it working by extending my form as follows:
public class MyForm extends ValidatorForm
public MyForm()
public MyForm(ActionServlet servlet) {
this();
if (super.getServlet() == null) {
if (servlet == null)
else
{ super.setServlet(servlet); log.debug("set servlet: " + servlet); }} else
{ log.debug("super.getServlet(): " + super.getServlet()); }when creating the form, I call it with
MyForm myForm = new MyForm(getServlet());
Attachments
Issue Links
- is depended upon by
-
STR-786 Make error messages more specific (omnibus issue)
- Reopened