歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> 自定義Struts2類型轉換器

自定義Struts2類型轉換器

日期:2017/3/1 10:21:07   编辑:Linux編程

一、自定義類型轉換器

創建一個類繼承com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter或繼承該類的子類org.apache.struts2.util.StrutsTypeConverter

  1. public class DateConversion extends StrutsTypeConverter {
  2. @Override
  3. public Object convertFromString(Map context, String[] values, Class toClass) {
  4. // TODO Auto-generated method stub
  5. SimpleDateFormat sf=new SimpleDateFormat("yyyyMMdd");
  6. if(toClass==Date.class){
  7. try {
  8. return sf.parse(values[0]);
  9. } catch (ParseException e) {
  10. // TODO Auto-generated catch block
  11. e.printStackTrace();
  12. }
  13. }else if(toClass==String.class){
  14. return sf.format(values[0]);
  15. }
  16. return null;
  17. }
  18. @Override
  19. public String convertToString(Map context, Object o) {
  20. // TODO Auto-generated method stub
  21. return null;
  22. }
  23. }
1、將上面的類型轉換器注冊為局部類型轉換器:

在Action類所在的包下放置ActionClassName-conversion.properties文件,ActionClassName是Action的類名,後面的-conversion.properties是固定寫法,PersonAction-conversion.properties:

屬性名=類型轉換器全類名;

  1. # syntax: <propertyName> = <converterClassName>
  2. birthday=org.han.util.DateConversion

或者封裝對象:

  1. public class PersonConversion extends StrutsTypeConverter {
  2. @Override
  3. public Object convertFromString(Map context, String[] values, Class toClass) {
  4. SimpleDateFormat sf = new SimpleDateFormat("yyyyMMdd");
  5. Person per = new Person();
  6. per.setName(values[0]);
  7. try {
  8. per.setBirthday(sf.parse(values[1]));
  9. } catch (ParseException e) {
  10. // TODO Auto-generated catch block
  11. e.printStackTrace();
  12. }
  13. return per;
  14. }
  15. @Override
  16. public String convertToString(Map context, Object o) {
  17. // TODO Auto-generated method stub
  18. return null;
  19. }
  20. }
action:
  1. @Namespace("/")
  2. public class PersonAction extends ActionSupport{
  3. private Person per;
  4. public Person getPer() {
  5. return per;
  6. }
  7. public void setPer(Person per) {
  8. this.per = per;
  9. }
  10. @Action(value="person",results={@Result(name="success",location="/index.jsp")})
  11. public String execute() throws Exception {
  12. // TODO Auto-generated method stub
  13. System.out.println(per.getBirthday());
  14. return SUCCESS;
  15. }
  16. }
jsp:
  1. <body>
  2. <form action="person.action" method="post">
  3. <input type="text" name="per" />
  4. <input type="text" name="per" />
  5. <input type="submit" value="提交"/>
  6. </form>
  7. </body>
  1. per=org.han.util.PersonConversion

2、將上面的類型轉換器注冊為全局類型轉換器:
在src下放置xwork-conversion.properties文件,該文件內容為:

待轉換的類型全類名=類型轉換器全類名;

  1. java.util.Date=org.han.util.DateConversion
Copyright © Linux教程網 All Rights Reserved