2011-09-30 19 views
0

在我的應用中使用playframework寫入方法時,我需要獲取Address字段的用戶輸入並搜索db以找到匹配的字段。如果找不到匹配的地址,我必須創建一個新的地址。測試可選字段值的正確方法

這裏只有addressLine1country是必填字段。 用戶可以忽略addressLine2。

同時採取從HTML表單輸入,可選字段的文本框返回一個空string.So,測試地址的創作,我決定創建一個Map<String,String>傳遞給POST方法.. 我試過

addrparams = new Map<String,String>(); 
addrparams.put("addressline1","clayton st"); 
addrparams.put("country","US"); 

當jpql查詢試圖爲缺少的選項字段綁定地圖值時,會導致出現空指針異常。

String query="select distinct a from Address a where a.addressLine1=:addressline1 and a.addressLine2=:addressline2 and a.country=:country"; 
Address address = Address.find(query).bind("addressline1",addressline1).bind("addressline2",addressline2).bind("country", country).first(); 
      .. 

我通過把空字符串的所有可選字段

addrparams = new Map<String,String>(); 
addrparams.put("addressline1","clayton st"); 
addrparams.put("addressline2",""); 
addrparams.put("country","US"); 

我希望這是做this..If有人能在測試這種情況下指出,更好的方法正確的方法,它解決了這個將幫助我很多

Address類

@Entity 
public class Address extends Model {  
    @Required 
    String addressLine1;  
    String addressLine2;   
    @Required 
    String country; 
... 
} 

更新時間: 堆棧跟蹤是here

其中nullptr發生異常Account.java:207,是此行

Address address = Address.find(query).bind("addressline1",addressline1).bind("addressline2",addressline2).bind("country", country).first(); 

回答

1

您的查詢是錯誤的。您錯過了where子句中的別名和等號:

where a.addressline1 = :addressline1 ... 

您構建地圖的方式也是錯誤的。您將「clayton st」作爲addressline1,然後將其替換爲空字符串。

如果這些更正不起作用,那麼編輯您的問題,粘貼異常的堆棧跟蹤,並告訴我們代碼中的哪一行會拋出它。

+0

我已經添加了堆棧跟蹤到問題 – jimgardener

+0

有問題的一些錯別字..我糾正了他們 – jimgardener

相關問題