定数アノテーションイメージ
定数アノテーションはこんな感じにしようかなーと思って。
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>