お互いの規則
code-genとS2Dxoを使ってみた。良い感じ、良い感じ。
ただ、自分の使い方だとちょっとごまかしが必要となりそう。
code-genがFindDtoとして下のようなプロパティを生成してくれて、
private Date hiredate = null; private Date hiredate_not = null; private Date hiredate_large = null; private Date hiredate_moreLarge = null; private Date hiredate_from = null; private Date hiredate_to = null; private Date hiredate_moreSmall = null; private Date hiredate_small = null; private List hiredate_in = null; // // getter と setter がそれぞれある //
FormBeanも手でhiredate_fromプロパティを作って、
public String getHiredate_from() { } public void setHiredate_from(String hiredate_from) { }
EmpPackFindDto convertEmpPackFindDtoFrom(EmployeeSearchForm employeeSearchForm);
な感じで変換したら、
java.lang.IllegalArgumentException: Illegal pattern character 'f' at java.text.SimpleDateFormat.compile(SimpleDateFormat.java:678) at java.text.SimpleDateFormat.initialize(SimpleDateFormat.java:497) at java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:446) at java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:427) at org.seasar.extension.dxo.converter.impl.BeanConverter.getDateValueAsDate(BeanConverter.java:281) at org.seasar.extension.dxo.converter.impl.BeanConverter.getDateValue(BeanConverter.java:194) at org.seasar.extension.dxo.converter.impl.BeanConverter.setValue(BeanConverter.java:107) at org.seasar.extension.dxo.converter.impl.BeanConverter.setValues(BeanConverter.java:95) at org.seasar.extension.dxo.converter.impl.BeanConverter.convert(BeanConverter.java:80) at org.seasar.extension.dxo.converter.impl.BeanConverter.convert(BeanConverter.java:70) at org.seasar.extension.dxo.command.impl.BeanToBeanDxoCommand.convertScalar(BeanToBeanDxoCommand.java:42)
ってエラーになってしまった。。。
S2DxoがDateクラスのプロパティの場合、プロパティ名_YYYYMMDDとかでアンダーバー以降を日付のフォーマットとして利用してるからみたい。
なのでFormBeanのプロパティをとりあえず、
public String getHiredateFrom() { } public void setHiredateFrom(String hiredate_from) { }
のようにアンダーバーがつかないようにして
S2Dxoで
String convertEmpPackFindDto_CONVERSION_RULE = "'hiredate_from' : hiredateFrom, 'hiredate_to' : hiredateTo"; EmpPackFindDto convertEmpPackFindDtoFrom(EmployeeSearchForm employeeSearchForm);
ってアノテーションで指定したら、うまくいったー。勉強にもなったな。
よく考えたら、FormBeanに
public String getHiredate() { return null; } public void setHiredate(String hiredate) { }
な感じでダミーのプロパティを作ってもうまくいきそうな気がしてきた。。。
試したら、やっぱりうまくいった。とりあえず、こっちの方法で置いておこう。