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

Reply via email to