한 편의 문장으로 Struts2의 유형 전환을 해결하다

4210 단어 struts2유형변환
앞말
우리는 HTTP를 통해 백그라운드에 제출된 데이터가 모두 문자열의 형식이라는 것을 알고 있으며, 우리가 필요로 하는 데이터 형식은 당연히 문자열 형식 하나만 있는 것이 아니다.그래서 우리는 유형 전환이 필요하다!다음은 상세한 소개를 봅시다.
1. 유형 전환의 의미
모든 MVC 프레임워크는 표현층의 해결 방안으로 사용자가 요청한 파라미터를 수집하여 컨트롤러에 제공해야 한다.그러나 웹 응용 프로그램에서 모든 요청 매개 변수는 문자열 형식입니다. 자바는 강한 유형의 언어입니다. 문자열을 자바 형식으로 어떻게 변환하는지 프레임워크가 해결해야 할 문제입니다.
예를 들어 등록 페이지에 나이, 날짜 등을 입력해야 한다.이때 날짜, 나이 문자열을 상응하는 유형으로 전환해야 한다.
2. Struts2 유형 변환기
Struts2는 내장된 형식 변환기를 제공합니다. 대부분의 유형에 대해 개발자는 사용자 정의 형식 변환기를 필요로 하지 않습니다. 내장된 형식 변환기를 사용하면 우리가 필요로 하는 형식 변환을 완성할 수 있습니다.
기본 유형 변환기는 다음과 같습니다.
     1.boolean과 Boolean.
     2.char 및 Character
     3.int 및 Integer
     4.롱과 롱
     5.플로트와 플로트.
     6.더블 및 더블
     7.date
예를 들어 우리가 페이지에 20을 입력하면 백엔드로 전송하는 것은 틀림없이 문자열 형식일 것이다.그러나 Struts 프레임워크의 내장 형식 변환은 20을 int형으로 변환할 수 있다.하지만 만약 우리가 abc와 같은 것을 int로 전환한다면 통하지 않을 것이다.
3. 사용자 정의 형식 변환기의 실현
1. 수요 분석
예를 들어 우리는 페이지에 (2,3)라는 좌표점을 입력하여 이 점을 하나의 점 대상 유형으로 전환해야 한다.
2. 실현
내장 형식 변환이 우리의 요구를 충족시키지 못할 때, 사용자 정의 형식 변환을 사용해야 합니다.Struts2의 유형 변환은 ONGL을 기반으로 하고 ONGL에 인터페이스 TypeConverter가 있습니다. 이 인터페이스에는 converterValue가 있습니다. 이 방법은 매우 복잡합니다.기본 구현 클래스인 Default Type Converter도 있습니다. 이 클래스를 통해 형식 변환을 할 수 있습니다.

package com.study.converter;
import java.util.Map;
import com.study.bean.Point;
import ognl.DefaultTypeConverter;
 
public class PointConverter extends DefaultTypeConverter{
 public Object convertValue(Map context, Object value, Class toType) {
  if(toType==Point.class){
   String []strs = (String[])value;
   String []xy = strs[0].split(",");
    
   int x = Integer.valueOf(xy[0]);
   int y = Integer.valueOf(xy[1]);
    
   Point p = new Point();
   p.setX(x);
   p.setY(y);
    
   return p;
    
  }else if(toType==String.class){
   Point p = (Point) value;
   return "["+p.getX()+","+p.getY()+"]";
  }else{
   return null;
  }
 }
}
이것이 바로 변환기의 간단한 실현으로 페이지가 전송하는 값을 해석하고 마지막에 포인트 형식으로 변환하는 것이다.그리고 유형 변환기를 사용하려면 설정해야 합니다
struts2는 다음과 같은 두 가지 구성 방법을 제공합니다.
a. 부분: 우선 Actionname-conversion과 같은 파일 이름을 만듭니다.properties, 안의 내용은 속성 = 형식 변환기(ponit=com.study.converter는 가방 아래에 써야 합니다
b. 전역: 먼저 xwork-conversion과 같은 파일 이름을 만듭니다.properties, 내용은com.study.bean.Ponit=com.study.converter.파일은 src 아래에 써야 합니다
3. Struts의 실현
struts2에는 Default Type Converter를 계승하는 Struts Type Converter 클래스가 있습니다.다음과 같은 예제 코드를 사용하여 변환기를 사용자 정의하는 것이 더 편리합니다.

package com.study.converter;
import java.util.Map;
import org.apache.struts2.util.StrutsTypeConverter;
import com.study.bean.Point;
 
public class PointConverter extends StrutsTypeConverter{
 public Object convertFromString(Map map, String[] obj, Class toType) {
  String []strs = obj;
  String []xy = strs[0].split(",");
 
  int x = Integer.valueOf(xy[0]);
  int y = Integer.valueOf(xy[1]);
 
  Point p = new Point();
  p.setX(x);
  p.setY(y);
 
  return p;
 }
 
 public String convertToString(Map map, Object obj) {
  Point p = (Point) obj;
  return "["+p.getX()+","+p.getY()+"]";
 }
}
4. 유형 변환기의 오류 처리
Struts2는 conversionError라는 차단기를 제공합니다. 형식 변환에 오류가 발생하면 차단기는 오류를 폼 오류 (filederror) 로 봉인하고 오류 정보를 ActionContext에 넣습니다.
기본 형식 변환 오류에 대한 오류 알림 정보를 어떻게 변경합니까?
방법 1:
먼저 자원 파일 Mess를 만듭니다.properties, src 밑에 놓으세요.
그리고 xwork-core-2.31\com\opensymphony\xwork2\xwork-messages를 덮어씁니다.properties 안의 속성 xwork.default.invalid.fieldvalue.바로 메세지에 있다.properties에 다음 인자를 기록합니다

xwork.default.invalid.fieldvalue="{0}" .
그리고 우리의 자원 파일을 지정합니다.struts.xml에서 (파일 접두사 필요 없음)

<constant name="struts.custom.i18n.resources" value="Mess"></constant>
방법 2:
어떤 액션 필드에 오류 정보 알림 제공
Actionname을 정의합니다.properties 파일, 구성 추가 - Invalid.fieldvalue.속성 이름 = 프롬프트 정보
총계
이상은 바로 이 글의 전체 내용입니다. 본고의 내용이 여러분의 학습이나 업무에 어느 정도 도움이 되고 의문이 있으면 댓글로 교류하시기 바랍니다.

좋은 웹페이지 즐겨찾기