OGNL 변환기를 사용하지 않고 플로트를 어떻게 설정합니까?
-
19-09-2019 - |
문제
다음과 같은 수업이 있습니다.
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 (객체)로 변경하면 작동합니까?
제휴하지 않습니다 StackOverflow