문제

나는 입력 매개 변수로 열거를 사용하기 위해 Struts 2에서 조치를 취하려고 노력하고 있습니다. 지금까지 한 일은 다음과 같습니다.

public TestAction {
  public enum Module {
    VALUE1;
  }

  private Module module;

  public void setModule(Module module) {
    this.module = module;
  }
  public Module getModule() {
    return module;
  }
}

그러나 이것을 사용하려고 할 때 Xwork 변환 오류가 발생하고 작업 자체가 실행되지 않습니다. 이 작업을 그대로 만들 수 있습니까, 아니면 SetModule (String)을 직접 제공해야합니까?

편집 : Struts 2.1.6을 사용하고 있습니다.

도움이 되었습니까?

해결책

그것은 끈을 열거적으로 바로 바인드해야합니다. 열거 형 변환기는 2.1.x라고 생각하기 때문에 기본 구성에 있다고 생각합니다.

  • Struts 2의 어떤 버전을 사용하고 있습니까?

당신이 확실하지 않은 경우 다음이 내 것입니다 xwork-conversion.properties 2.0.14 앱에서

java.lang.Enum = com.opensymphony.xwork2.util.EnumTypeConverter

편집하다: 의견에 대한 응답으로, 열거를 할당하기 위해 사례를 무시 해야하는 경우 다음과 같은 선택이 있습니다.

  • Enum의 가치를 actaully로 소문자로 변경하십시오 - 훌륭한 스타일이 아니라 코드를 조금 이상하게 보이게 할 수 있습니다.
  • java.lang.enum에 대한 새로운 케이스 insensitive yfect converter를 작성하십시오 (Xwork One을 복사하고 입력을 Toupper로 복사하십시오).
  • 이 특정 케이스에 새 SetModule (String) 추가

다른 팁

동작에서 리디렉션 조치로 전달할 때 비슷한 문제가 발생합니다 (조치 전진 대신) Struts는 매개 변수를 사용하고 있음을 제대로 인식하지 못합니다. List<Enum> 그리고 문자열 매개 변수에서 변환하기 위해 프록시 방법을 사용해야했습니다. List<Enum>.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top