2011-11-23 79 views
2

這種情況並非總是發生,而是經常發生,而且很煩人。當我嘗試從String以外的值(在Action中聲明)中獲取值時,它會給我一個異常,如java.lang.NoSuchMethodException。Struts2 java.lang.NoSuchMethodException(表單值類型)

2011年11月23日下午4點13分20秒 com.opensymphony.xwork2.util.logging.commons.CommonsLogger警告 警告:錯誤值「[Ljava.lang.String設定表達 '乘客'; @ 157b2d」 ognl.MethodFailedException:方法 「setPassengers」 失敗對象[email protected] [java.lang.NoSuchMethodException: com.deveto.struts.actions.BookFlightAction.setPassengers([Ljava。 lang.String;)]

來自操作的代碼:

private Integer passengers; 

public Integer getPassengers() { 
    return passengers; 
} 

public void setPassengers(Integer passengers) { 
    this.passengers = passengers; 
} 

的JSP:

<s:form action="book-flight" theme="simple"> 
     <s:textfield name="passengers" value=""/> 
</s:form> 

而且很奇怪的是它發生在隨機所有的時間,而不是在某些特定點。你們有沒有建議?

更新:我發現這一點:

1)http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6434149

2)http://dev.bostone.us/2009/02/23/javaxfacesfacesexception-javalangclassnotfoundexception-ljavalangstring/#awp::2009/02/23/javaxfacesfacesexception-javalangclassnotfoundexception-ljavalangstring/(但它是Eclipse只)

+1

不應價值像'值= 0'因爲' 「」'應該是'String',你只需要'setPassanders(整數)'和'不setPassanders(字符串)'整數。另外,您可能必須在某處設置「類型」 – PeterT

+0

這是自動填充完成的技巧,但是當我提交表單時,會有一個由用戶輸入的值。 – Denees

+0

給出引發異常的值的示例。你的方法期待一個Integer,確保它是一個而不是String。 –

回答

2

這種情況只能在傳入的字符串值不代表基元或類型的有效實例時發生。

因爲按你的說法是發生僅表示該輸入是不是有什麼期望

OGNL提供開箱即用型轉換所有的原始和包裝類型的幾個時間。 只需進行調試即可找出乘客中究竟傳遞了什麼信息。

There is no need to do any type conversion in struts2 until unless it is 
being not provided by OGNL else you are not using 
framework build in capabilities 
+0

我已經調試過,正如我所說,有一個整數:) – Denees

+0

你可以發佈你的struts配置文件和jsp一些表單字段中的所有數據?只要渴望什麼可以是一個問題,因爲我從來沒有面對過它。 –

+0

看看第一篇文章,我更新了它。現在我需要以某種方式解決它。 :) – Denees

2

喜歡這個名字Textfield表明,這種元素只處理文本。您可以強制它通過使用驗證這裏描述接受什麼,但數字:Field Validators

您將然而仍然收到 String"7"不是整數的。您必須使用 Integer.parseInt(String) 手動進行解析。

編輯出錯部分。

+0

我明白,但它並不是所有的時間,有時值是正確的,沒有例外:) – Denees

+0

好吧,那很奇怪。你可以重載'setPassengers(String)'並打印被傳輸的字符串以及它在開始還是結束時是否有空格? – PeterT

+0

是的,它沒有空格,它正常。我已經嘗試過了。 – Denees

相關問題