3

I am doing a project in Struts2 where I need of setting a parameter in URL like user parameter in below link.

I want this parameter to be passed when I click a form submit button and not any links separately. I know how to do this with <s:url> but that way I need to create a link instead of form submit.

Can someone please help me with a code sample how to do this? I know there's a way to do it with HTML or Struts1 but how to do it with Struts2? If there is a way to do this in struts.xml, please explain with an example.

<form action="/example/xyz.action?user=george" method="POST">
Roman C
  • 49,761
  • 33
  • 66
  • 176
user1819548
  • 51
  • 2
  • 2
  • 3

2 Answers2

8

try this:

<s:form action="xyz.action" method="GET">
    <s:hidden name="user" value="george"/>
    // other fields
</s:form>

method="GET" will show your parameter on the url, <s:hidden name="user" value="george"/> will take your parameter.

here is also an example for you Example

Jaiwo99
  • 9,687
  • 3
  • 36
  • 53
  • This is as close as it gets to the correct solution. See: http://stackoverflow.com/questions/1116019/submitting-a-get-form-with-query-string-params-and-hidden-params-disappear. **TLTR**: by html standards there should be no query param in action attribute of form tag. – uthomas Feb 15 '17 at 13:13
  • **This is not correct solution because it's missing parameters in the URL.** – Roman C Jul 01 '17 at 17:44
6

It's possible if you use <s:url and <s:form tags.

<%@ taglib prefix="s" uri="/struts-tags" %>

<s:url id="xyzUrl" action="xyz" includeContext="false"><s:param name="user" value="george"/></s:url>
<s:form name="xyzForm" action="%{xyzUrl}" method="POST">
Roman C
  • 49,761
  • 33
  • 66
  • 176