문제

다음과 같은 수업이 있습니다.

public class Foobar {
   private float value;
   public void setValue(float value) {
      this.value = value;
   }
}

그런 다음 변수 foobar.value로 전달되는 웹 페이지 (struts2)가 있습니다.

<input type="text" name="foobar.value" value="123.456">

그런 다음이 오류가 발생합니다.

ognl.MethodFailedException: Method "setValue" failed for object Foobar@19d373d [java.lang.NoSuchMethodException: setValue([Ljava.lang.String;)]
    at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:823)

컨버터 생성에 대해 이야기하는이 웹 사이트를 찾았습니다 http://www.opensymphony.com/ognl/html/developerguide/typeconversion.html

Ognl과 Struts2는 기본적으로 원시 플로트를 설정하는 것을 지원하지 않습니까?

도움이 되었습니까?

해결책 2

좋아, 나는 그것을 알아 냈다. 위의 코드가 작동합니다. 그러나 이것은 작동하지 않습니다.

 <input type="text" name="foobar.value" value="-123.456">

분명히 Ognl은 음수를 문자열로 해석합니다. 컨버터 없이이 작업을 처리하는 방법을 잘 모르겠습니다. 긍정적 인 플로트와 플로트를 기본적으로 처리 할 것이라는 것을 아는 것이 좋습니다.

나는이 버그를 발견 한 것에 대해 이것에 대한 추가 연구를했다. http://issues.apache.org/struts/browse/ww-2971

폐쇄되었지만 버전 2.1.8은 Maven에 있지 않으며 최신 버전의 Struts2는 아직 의존하지 않습니다. :(

지금은 컨버터를 쓸 것 같아요.

다른 팁

값을 float (객체)로 변경하면 작동합니까?

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