Total Pageviews

2011/10/07

如何在iReport中設定欄位高度依據其內容而延展

Problem
當textfield中,資料長度過長時,過長的部份會被截掉,希望若遇到過長的部份能夠折行處理。



Solution
利用iReport打開jrxml file,點選特定的textfield

將Stretch With Overflow此選項打勾即可。
 

Result



2011/10/05

How to count the total number of records in JasperReports

Objective
We would like to show the total number of records at the end of report: 

How to do it
It's very easy and straightforward, just utilize the build-in variable (REPORT_COUNT), drag and drop the build-in variable into report. That's all.




2011/09/23

There are no resources that can be added or removed from the server


Today I simply would like to deploy my ear file to WAS (Web Application Server) as usual. 


But it fail to find my EAR file:
 

I spent more than two hours to find its root cause and solution. But it's still in vain.
Finally, I decide to give up. I just switch to another workspace and check out source code from SubVersion, then it's going to normal. I don't know why!
 

2011/09/22

2011/09/21

2011/09/17

net.sf.json.JSONException: org.apache.openjpa.lib.util.ParseException

Scenario
當使用者輸入異常代號,系統要自動帶出違章編號徵銷管理代號應納金額已納金額等欄位。

 


Problem
在Controller,我們會去呼叫後端service class,根據使用者所輸入的異常代號進行搜尋,帶回符合條件的entity(i.e. NIGT900),但是在轉成JSONObject的時候,出現下列錯誤訊息:
net.sf.json.JSONException: org.apache.openjpa.lib.util.ParseException: Errors occurred while creating property descriptors for the following properties: [RefreshFromDataCache, CacheMarshallers, jdbc.QuerySQLCache, jdbc.CollectionId, AccessIntent].
at net.sf.json.JSONObject._fromBean(JSONObject.java:987) ~[json-lib-2.3-jdk15.jar:na]


Root Cause
由於回傳的entity(i.e. NIGT900)有一個資料型態為Timestamp的欄位,導致會出現此錯誤



Solution
利用JsonConfig將timeStamp欄位exclude掉

Result



2011/09/15

How to Organize Imports Automatically in Eclipse

Problem
When using Eclipse, I find myself typing Ctrl+Shift+O several times, to organize imports (usually imports which are no longer required, generating warnings).



Solution
Preferences->Java->Editor->Save Actions->Check "Perform the selected actions on save" --> Check "Organize Imports"



See....after save action had been trigger, it will organize imports automatically
 

2011/09/10

tutorials point

一個還不錯的技術學習網站: http://www.tutorialspoint.com/index.htm


2011/09/09

JPA Annotation @JoinColumn / @JoinColumns 應用

Scenario
我們在利用JPA(Java Persistence API)的時候,code generator會自動幫table之間有關連的部份產生出來,但是在實際應用上,有可能table之間沒有關連性,但是卻需要來做join抓取資料的需求。


此時就要自行在該entity上宣告變數與join的欄位。若是single column的狀況下,可以採用@JoinColumn,若是composite column的話,可以採用@JoinColumns


Demo
NIGT001與NIGT007雖然沒有relationship,但是在實際應用上,常會做JOIN,彼此透過single column來做Join





在原本的NIGT001增加nigt007此attribute,並產生setter/getter methods,註明兩張table之間的relationship,name的部份是NIGT001的欄位,referencedColumnName的部份是NIGT007的欄位名稱,此二table彼此是透過上述欄位來進行join
 




NIGT001與NIGT022雖然沒有relationship,但是在實際應用上,常會做JOIN,彼此透過composite column來做Join





在原本的NIGT001增加nigt022此attribute,並產生setter/getter methods,註明兩張table之間的relationship,name的部份是NIGT001的欄位,referencedColumnName的部份是NIGT022的欄位名稱,此二table彼此是透過上述欄位來進行join




Checkbox/Radio Button filters with jQuery

Scenario
當使用者輸入查詢條件,並按下查詢按鈕,系統會自動將符合條件的資料呈現於data grid中,使用者選擇某筆資料,點選查詢

當使用者點選查詢後,系統會將資料庫的資料帶入dialog中:
 
系統會根據欄位值來決定radio button要預設選擇哪一個,以及決定checkbox是否要打勾


 Radio button



原本的寫法:


採用filter的寫法:


Checkbox

 原本的寫法:

 採用filter的寫法:


有關filter的文件,請參考:http://api.jquery.com/filter/





2011/09/08

net.sf.json.JSONException: There is a cycle in the hierarchy!


Problem
I apply JPA(Java Persistence API) to do search via primary key, then it return an object to me. And I would like to covert this object to JSONObject, it show this error message.

1
2
3
4
5
6
7
net.sf.json.JSONException: There is a cycle in the hierarchy! 
at net.sf.json.util.CycleDetectionStrategy$StrictCycleDetectionStrategy.handleRepeatedReferenceAsObject(CycleDetectionStrategy.java:97) 
at net.sf.json.JSONObject._fromBean(JSONObject.java:674)
at net.sf.json.JSONObject.fromObject(JSONObject.java:181) 
at net.sf.json.JSONArray._processValue(JSONArray.java:2381) 
at net.sf.json.JSONArray.processValue(JSONArray.java:2412) Truncated. 
see log file for complete stacktrace


The code snippet as shown below


Root Cause
Because the entity you return has many-to-one relationship, so you need to filter them out.

Solution



Reference: http://json-lib.sourceforge.net/snippets.html

2011/09/07

How to Automatically Add Javadoc and File Headers to Your Source Code

Problem
In our project, we need to fix all checkstyle checking errors. One of the most annoying error is missing a Javadoc comment.





Solution
We can install an Eclipse Plugin, JAutodoc, to help us.
JAutodoc is an Eclipse Plugin for automatically adding Javadoc and file headers to your source code. It optionally generates initial comments from element name by using Velocity templates for Javadoc and file headers.
Official site: http://jautodoc.sourceforge.net/index.html


Where to download?





How to Install?
1. Before you install, please shutdown your eclipse
2. copy two jar files to plugins folder
3. copy one feature folder to features folder

4. Restart Eclipse


How to Use?
Select a single or multiple class(es): right click --> JAutodoc --> Add Javadoc


 JAutodoc will generate comments from element name as shown below
 
 JAutodoc will generate comments from method name as shown below






2011/09/05

How to Adjust Your Eclipse's Tab Policy to Spaces Only


1. Window --> Preference

2. Use "formatter" as keyword to search --> New


3. Give it a new name in New Profile dialog --> Click OK 

4. In General Settings, choose "Spaces Only" in Tab policy

5. Click OK

2011/09/03

ADMA0174E: The filepermission argument contains an invalid formator contains an invalid regular exp

Problem

As I try to deploy my ear file to WAS(WebSphere Application Server), it show this error message

[10/09/03 15:22:21:394 GMT] 00000031 SystemErr R com.ibm.websphere.management.exception.AdminExcept ion: ADMA0174E: The filepermission argument contains an invalid format or contains an invalid regular expression pattern: {0}. Correct format is file_pattern=permission. Multiple filepermissions are separated by a # (Example: .*\.jsp=644#.*\.xml=744).
[10/09/03 15:22:21:394 GMT] 00000031 SystemErr R at com.ibm.ws.management.application.UpdateSchedulerI mpl.validateParams(UpdateSchedulerImpl.java:301)
[10/09/03 15:22:21:394 GMT] 00000031 SystemErr R at com.ibm.ws.management.application.UpdateSchedulerI mpl.setupTasks(UpdateSchedulerImpl.java:214)
[10/09/03 15:22:21:410 GMT] 00000031 SystemErr R at com.ibm.ws.management.application.SchedulerImpl.ru n(SchedulerImpl.java:250)
[10/09/03 15:22:21:410 GMT] 00000031 SystemErr R at java.lang.Thread.run(Thread.java:797)
[10/09/03 15:22:33:301 GMT] 00000034 SystemErr R com.ibm.websphere.management.exception.AdminExcept ion: ADMA0174E: The filepermission argument contains an invalid format or contains an invalid regular expression pattern: {0}. Correct format is file_pattern=permission. Multiple filepermissions are separated by a # (Example: .*\.jsp=644#.*\.xml=744).
[10/09/03 15:22:33:301 GMT] 00000034 SystemErr R at com.ibm.ws.management.application.UpdateSchedulerI mpl.validateParams(UpdateSchedulerImpl.java:301)
[10/09/03 15:22:33:301 GMT] 00000034 SystemErr R at com.ibm.ws.management.application.UpdateSchedulerI mpl.setupTasks(UpdateSchedulerImpl.java:214)
[10/09/03 15:22:33:301 GMT] 00000034 SystemErr R at com.ibm.ws.management.application.SchedulerImpl.ru n(SchedulerImpl.java:250)
[10/09/03 15:22:33:301 GMT] 00000034 SystemErr R at java.lang.Thread.run(Thread.java:797)


Solution
The root cause is still unknown, but if I remove the ear file and add it again. This problem is gone.

2011/09/01

@Autowire is not working properly in my spring application

Problem
From my @Controller, i can easily access my autowired @Service class and play with it no problem. But when I do that from a separate class without annotations, it gives me a NullPointerException.


Solution
Spring dependency injection works only in components managed by Spring.


By default, classes annotated with @Component, @Repository, @Service, @Controller, or a custom annotation that itself is annotated with @Component are the only detected candidate components.


If your class is not managed by Spring (i.e. is not a Spring bean), @Autowired doesn't work inside it.