Hi!
I am wondering, why setters for cmd and id fields @ my Person action (see
below) is called twice. For example, when browser requests
/person-aaa-bbb?dum=ccc , this gets stdout-ed :
example.per...@113981b 18061339
setCmd ]aaa[
setId ]bbb[
setCmd ]aaa[
setDum ]ccc[
setId ]bbb[
execute
I know setter is just a setter, but this thing is really annoying me :) -
definately this kind of behaviour is undesirable. Any thoughts?
struts.xml:
--- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- ---
--- >
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="false" />
<package name="default" namespace="/" extends="struts-default">
<action name="person-*-*" class="example.Person">
<param name="cmd">{1}</param>
<param name="id">{2}</param>
<result>jsp/abc.jsp</result>
</action>
<action name="index">
<result type="redirectAction">
<param name="actionName">HelloWorld</param>
<param name="namespace">/example</param>
</result>
</action>
</package>
</struts>
< --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- ---
--- ---
Action:
--- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- ---
--- >
package example;
import com.opensymphony.xwork2.ActionSupport;
@SuppressWarnings("serial")
public class Person extends ActionSupport {
//
private String cmd;
private String id;
private String dum;
//
public String execute() throws Exception {
System.out.println( "execute" );
return SUCCESS;
}
public Person() {
System.out.println( this + " " + this.hashCode() );
}
//
public String getCmd() {
return cmd;
}
public void setCmd(String cmd) {
System.out.println( "setCmd ]" + cmd + "[" );
this.cmd = cmd;
}
public String getId() {
return id;
}
public void setId(String id) {
System.out.println( "setId ]" + id+ "[" );
this.id = id;
}
public String getDum() {
return dum;
}
public void setDum(String dum) {
System.out.println( "setDum ]" + dum+ "[" );
this.dum = dum;
}
}
< --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- ---
--- ---
I uploaded war, so you can see this mystic stuff for yourself:
With no jars (grab them from struts2-blank app), 4kb:
http://maiss.02.lv/faili/batman/s2test_nolibs.war
Working version, 4mb: http://maiss.02.lv/faili/batman/s2test.war