定数アノテーションイメージ

定数アノテーションはこんな感じにしようかなーと思って。

public interface TestAction {

    String[] ACTION = { "name=testForm", "input=/error.jsp", "parameter=method" };

    String SUCCESS_FORWARD = "path=/test.jsp";

    String SUCCESS = "success";

    String[] FAIL_FORWARD = { "path=/fail.jsp", "redirect=true" };

    String FAIL = "fail";

}
public class TestForm {

    public static final String FORM = "name=testForm";

    public static final String   mix_VALIDATOR_Required = null;
    public static final String   mix_VALIDATOR_Minlength = "10";
    public static final String   mix_VALIDATOR_Maxlength = "15";
    public static final String[] mix_VALIDATOR_Mask = { "pattern=com$", "messageKey=mustendcom" };
    public static final String   mix_VALIDATOR_EmailType = null;
    public static final String[] mix_VALIDATOR_ARGS = { "mixValue", "resource=false" };

    public void setMix(String mix) {
    }

}

String[]はやりすぎかも。
やっぱりカンマ区切りにしよう。あわせたほうがいいと思うし。


あと、Validationは変だなー。いっそ

    public static final String   mix_VALIDATOR_0 = "required";
    public static final String   mix_VALIDATOR_1 = "email";
    public static final String   mix_VALIDATOR_2 = "minlength, value=10";
    public static final String   mix_VALIDATOR_3 = "maxlength, value=15";
    public static final String   mix_VALIDATOR_4 = "mask, pattern=com$, messageKey=mustendcom";

って感じのほうが見やすいかも
どっちにしてもセンスがないって言われそう。




ちなみにBackport175とTigerバージョンだったらこんな感じ。

/**
 * @org.seasar.struts.annotation.StrutsAction(name="testForm", input="/error.jsp",
 *                                                             parameter="method")
 */
public interface TestAction {

    /**
     * @org.seasar.struts.annotation.StrutsActionForward(path="/test.jsp")
     */
    String SUCCESS = "success";

    /**
     * @org.seasar.struts.annotation.StrutsActionForward(path="/fail.jsp", redirect=true)
     */
    String FAIL = "fail";

}
@StrutsAction(name = "testForm", input = "/error.jsp", parameter="method")
public interface TestAction {


    @StrutsActionForward(path="/test.jsp")
    String SUCCESS = "success";

    @StrutsActionForward(path="/fail.jsp", redirect=true)
    String FAIL = "fail";

}
/**
 * @org.seasar.struts.annotation.StrutsActionForm(name="testForm")
 */
public class TestForm {

    /**
     * @org.seasar.struts.validator.annotation.Required
     * @org.seasar.struts.validator.annotation.Minlength(10)
     * @org.seasar.struts.validator.annotation.Maxlength(15)
     * @org.seasar.struts.validator.annotation.Mask(pattern="com$", messageKey="mustendcom")
     * @org.seasar.struts.validator.annotation.EmailType
     * @org.seasar.struts.validator.annotation.Args(keys="mixValue", resource=false)
     */
    public void setMix(String mix) {
    }

}
@StrutsActionForm(name = "testForm")
public class TestForm {

    @Required
    @Minlength(10)
    @Maxlength(15)
    @Mask(pattern = "com$", messageKey = "mustendcom")
    @EmailType
    @Args(keys = "mixValue", resource = false)
    public void setMix(String mix) {
    }

}

ついでにstruts-config.xmlとvalidation.xmlで記述するとこんなふう

<struts-config>
    <form-beans>
        <form-bean name="testForm" type="examples.TestForm"/>
    </form-beans>

    <action-mappings>
        <action path="/test"
                type="examples.TestAction"
                name="testForm"
                parameter="method"
                input="/error.jsp"
                scope="request"
                validate="true"
                unknown="false">
            <forward name="success" path="/test.jsp" />
            <forward name="success" path="/fail.jsp" redirect="true" />
        </action>
    </action-mappings>

</struts-config>
<form-validation>
    <formset>
        <form name="testForm">
            <field property="input" depends="required, minlength, maxlength, mask, email">
                <msg name="mask" key="mustendcom"/>
                <arg key="Args" resource="false"/>
                <arg position="1" name="minlength" key="${var:minlength}" resource="false"/>
                <arg position="1" name="maxlength" key="${var:maxlength}" resource="false"/>
                <var>
                    <var-name>minlength</var-name>
                    <var-value>10</var-value>
                </var>
                <var>
                    <var-name>maxlength</var-name>
                    <var-value>15</var-value>
                </var>
                <var>
                    <var-name>mask</var-name>
                    <var-value>com$</var-value>
                </var>
            </field>
        </form>
    </formset>
</form-validation>