Category Archives: Java

Glassfish Restful cause 500 error

Controller code 如下

@GET
@Produces(MediaType.APPLICATION_JSON)
public List<Personnel> getAllPersonnel() {
List<Personnel> results=personnelDAO.getPersonnel();
return results;
}

Model 造成問題的 code

@OneToMany(mappedBy=”personnel”)
private List<Signup> signups;

因為有 1 對多的關聯,又沒有指定 fetch type,當 Signup table 沒有關聯資料時,signups 是未初始狀態,造成 server return 500 error,關聯宣告修改如下即可

@OneToMany(mappedBy=”personnel”, fetch=FetchType.EAGER)

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...

Glassfish + MySQL = No database selected

最近在 Glassfish application server 上設定 MySQL datasource 及 connection pool 後,以 JPA 存取 database 時卻出現 No database selected 錯誤訊息,在這個 網址 找到了答案。

建立 connection pool (教學網址) 時有很多 additional property,其中有一個 Url 要填例如 jdbc:mysql://localhost:3306/mydb,填好連資料庫就出現標題的錯誤,要把 property name ‘Url’ 改成 ‘URL’ 才可以正常連線。

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...

Struts2 + JSON plugin

簡單記錄 struts2 + json plugin 的 AJAX 寫法

1. 在 struts2 的 xml 檔加入以下 json 設定

<package name=”json” namespace=”/json” extends=”json-default”>
<action name=”getCustomer” class=”com.amjet.web.action.JsonAction” method=”getCustomer”>
<result name=”success” type=”json”>
<param name=”root”>response</param>
</result>
</action>
</package>

2. json action 內放一個 property response, 例如

private Map<String,Object> response;

加上 getter, setter, 回傳 ajax response

3. json action method

public String getCustomer() {

response=new HashMap<String,Object>();

response.put(“info”,<customer info>);
return SUCCESS;
}

4. 頁面接取 json 資料

function doQuery() {
$.ajax({
url: ‘<s:url action=”getCustomer” namespace=”/json”/>’,
type: ‘POST’,
dataType: ‘json’,
data: { id_no: id_no },
success: function(data,status,xhr) {

***  your handler here ***

}
});
}

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...

Struts2 tips

當 struts2 的 action code 拋出 exception 時,有一個頁面提示系統的使用者是相當方便的,一方面讓使用者了解目前發生了異常的情形,也可以在頁面上置入錯誤碼讓問題回報及解決更加有效率。本文主要參考這個 網址

首先在 struts.xml 要有以下設定

<global-results>
<result name=”Exception”>/Exception.jsp</result>
</global-results>
<global-exception-mappings>
<exception-mapping exception=”java.lang.Exception” result=”Exception”/>
</global-exception-mappings>

在 jsp 可以顯示 ‘目前系統發生異常狀況,錯誤代碼為 xxxxxx ,請向系統管理人員回報以便儘快處理’ 。

另外在 jsp 的 OGNL 語法字串比較部份有一個小提示

<s:if test=”%{#request.err_code.equals(‘A’)”>

這個寫法 err_code 是字串,’A’ 是一個 character,所以即使 action err_code 傳來 “A”,比對的結果仍然是 false

<s:if test=’%{#request.err_code.equals(“A”)’>

以上的寫法比對的結果才會是 true

 

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...