2012-09-13 31 views
6

Cách tốt nhất để cắt chuỗi này là gì/nơi nào là nơi tốt nhất để đặt mã trang trí?Cắt xén đầu vào chuỗi văn bản Struts2

Nói rằng tôi có textfield sau trong jsp của tôi:

<s:textfield label="First Name" name="person.firstname"/> 

Lớp hành động:

public class BaseAction extends ActionSupport implements ServletRequestAware, SessionAware { 
    private Person person; 
    // Getters, setters and action logic 
} 

bean:

public class Person implements Serializable { 
    private String lastname; 
    private String firstname; 
    // Getters and setters 
} 

tôi có thể thay đổi các thiết lập mặc định trong đậu nhưng điều này có vẻ giống như một hack:

public void setFirstname(String firstname) { 
    this.firstname = firstname.trim(); 
} 

EDIT: Tôi cũng thấy câu hỏi này: struts2 trim all string obtained from forms nơi nó cũng được gợi ý bởi một số phương pháp "đúng" là sử dụng bộ chặn.

Tại sao máy đánh chặn là "đúng"? Điều gì là sai lầm về việc thay đổi người định cư của đậu?

Trả lời

3

Câu trả lời ngắn là Không theo mặc định, không có cơ chế xây dựng để thực hiện việc này và bạn cần thực hiện điều đó trong lớp hành động hoặc một số loại tập lệnh java sẽ làm điều đó cho bạn.

Cách khác có thể là tạo trình chặn để thực hiện việc này với tùy chọn loại trừ hoặc điều gì đó giống như trên chuyến đi tương tự.

Tôi tin rằng Interceptor là một cách hay để thực hiện việc này, tốt hơn nên có bộ chặn đánh chặn như vậy đi kèm với S2.

+0

Cảm ơn Umesh. Tâm trí mở rộng một chút về câu trả lời của bạn và giải thích tại sao interceptor là con đường để đi? – nmc

+1

@nmc Thực hiện việc sử dụng máy đánh chặn là nguyên nhân tốt, chúng tôi có thể thực hiện theo cách chung chung và áp dụng cho bất kỳ hành động nào. –

6

Có thể thực hiện với Struts2 converters.

public class TrimmingStringConverter extends StrutsTypeConverter { 

    public Object convertFromString(Map ctx, String[] values, Class arg2) { 
     if (values != null && values.length > 0) { 
      return values[0].trim(); 
     } 

     return null; 
    } 

    public String convertToString(Map ctx, Object o) { 
     if (o != null) { 
      return o.toString(); 
     } 
     else { 
      return null; 
     } 
    } 

    public Object convertValue(Map context, Object o, Class toClass) 
    { 
     if (o == null) { 
      return null; 
     } else if (toClass == java.lang.String.class) { 
      if (o instanceof String[]) { 
       String[] os = (String[]) o; 

       if (os.length > 0) { 
        return os[0].trim(); 
       } 
      } 

      return o.toString().trim(); 
     } 

     return super.convertValue(context, o, toClass); 
    } 
} 

Nó phải được đăng ký tại xwork-conversion.properties: java.lang.String = es.jogaco.webapp.TrimmingStringConverter

này sẽ được áp dụng cho tất cả các người dùng nhập vào.

Nó sẽ hoạt động nếu bạn có bộ chặn đánh chặn struts2 mặc định. Trích dẫn từ struts2 doc:

Theo mặc định, đánh chặn chuyển đổi được bao gồm trong struts-default.xml trong ngăn xếp mặc định

Ngoài ra tôi có nó làm việc trong ứng dụng struts2 tôi.

Các vấn đề liên quan