How can I pass form input value to an Action (struts 1)
22,466
To access form values in a Struts 1 action, you need to cast ActionForm form
to the type of form that the page uses, in your case MyForm
. Then you can access its getters like normal. For example:
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
MyForm theForm = (MyForm) form;
String name = theForm.getName();
if (name == null || "".equals(name)) {
// error case; name is required
// do something
}
if(getErrors(request) == null ||getErrors(request).size() == 0)
return mapping.findForward("success");
else
return mapping.getInputForward();
}
If the problem you're having is getting the values out of MyForm
into the JSP page, and you truly cannot use taglibs*, then you can get the form like this:
<%
MyForm theForm = (MyForm) session.getAttribute("MyForm");
%>
Then insert it into the page like this:
<form class="form-horizontal" action="address.do" method="post">
Name: <input type="text" value="<%= theForm.getName() %>" class="form-control" name="name"><br>
City <input type="text" value="<%= theForm.getCity() %>" class="form-control" name="city"><br>
Country: <input type="text" value="<%= theForm.getCountry() %>" class="form-control" name="country"><br>
<button class="btn btn-success" type="submit">Submit</button>
</form>
BUT you probably can use taglibs and just don't know how to add css classes to them. In the taglibs, styleClass
renders to class
in the output html. Try this:
<html:form styleClass="form-horizontal" action="address.do" method="post">
Name: <html:text styleClass="form-control" name="name" /><br>
City <html:text styleClass="form-control" name="city" /><br>
Country: <html:text styleClass="form-control" name="country" /><br>
<button class="btn btn-success" type="submit">Submit</button>
</html:form>
Author by
Oscar MV
Updated on July 05, 2022Comments
-
Oscar MV almost 2 years
I'm new using struts.
I need to pass the form value to an action when I submit the form. I want to use input tag no html:text.
How to do it?
This is my code:
form in JSP:
<form class="form-horizontal" action="address.do" method="post"> Name: <input type="text" class="form-control" name="name"><br> City <input type="text" class="form-control" name="city"><br> Country: <input type="text" class="form-control" name="country"><br> <button class="btn btn-success" type="submit">Submit</button> </form>
struts-config.xml:
<form-beans> <form-bean name="myFrom" type="com.form.MyForm"/> </form-beans> <global-forwards> <forward name="pagAddress" path="/address.do"/> </global-forwards> <action-mappings> <action path="/address" type="com.action.MainAction" name="myForm" scope="request" input="/addressInput.jsp" validate="true"> <forward name="success" path="/addressInput.jsp"/> </action> </action-mappings>
ActionForm:
public class MyForm extends ActionForm{ private static final long serialVersionUID = -XXXXXXXXXXXXXXXXXXXX; private String name = ""; private String city = ""; private String country = ""; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getCity() { return city; } public void setCity(String city) { this.city = city; } public String getCountry() { return country; } public void setCountry(String country) { this.country = country; } @Override public void reset(ActionMapping mapping, HttpServletRequest request) { this.name = null; this.city = null; this.country = null; super.reset(mapping, request); } }
Action:
public class MainAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { if(getErrors(request) == null ||getErrors(request).size() == 0) return mapping.findForward("success"); else return mapping.getInputForward(); } }
-
Euridice01 about 5 yearshow do I do a post request using struts 1 without form data but rather a string that I want to send as url encoded?