Archive for Java

DWR Ajax Problem di Tomcat 7.0

Fitur baru pada Apache Tomcat 7.0 yaitu Mengimplementasi HTTPOnly dengan default value = true akan mengakibatkan masalah bagi Web Aplikasi yang menggunakan DWR sebagai Framework Ajax.

Berikut capture error Message yang terjadi pada Tomcat 7.0:

Baca berikut untuk lebih jelasnya.

http://redrata.com/2010/11/resolving-dwr-csrf-security-error-popups/

Untuk mengatasi permasalahan berikut, buka konfigurasi tomcat di context.xml ubah useHttpOnly valuenya menjadi “false”.

<Context useHttpOnly=”false”>

Bagaimana Membuat Satu Atau Lebih Iterasi didalam Ibatis

Ibatis sebenernya bukan framework JPA yang saya sukai tetapi ada salah satu project dikantor menggunakan Ibatis, butuh seharian sebenernya untuk saya menyelesaikan pembuatan Iterasi di Ibatis tapi mudah-mudahan solusi ini bermanfaat bagi orang lain.

Intinya sih saya membuat sebuah model bantu / dummy model yang tidak ada hubungannya dengan database, Saya membuat 2 attribute array didalamnya yaitu PlanCode dan Prefix yang nanti akan saya buat dinamis querynya didalam Ibatis dengan menggunakan SQL IN CLAUSE


package com.avrist.repoprint.model;

public class BankExt {
	private String[] planCode;
	private String[] prefix;

	public String[] getPlanCode() {
		return planCode;
	}
	public void setPlanCode(String[] planCode) {
		this.planCode = planCode;
	}
	public String[] getPrefix() {
		return prefix;
	}
	public void setPrefix(String[] prefix) {
		this.prefix = prefix;
	}

}

Sudah membuat object modelnya, lalu buka settingan Ibatis.xml untuk dinamis SQLnya. Masukkan parameterClass=”BankExt” dimana ini adalah Type Alias dari Object BankExt. Setelah itu perhatikan Kata Kunci Iterate disini berfungsi untuk mengiterasi data array didalam property PlanCode dan Prefix.

<typeAlias alias="BankExt" type="com.avrist.repoprint.model.BankExt"/>

<select id="getFundCodeByPlanCode" resultMap="Fund" parameterClass="BankExt">
    	SELECT DISTINCT  a.COMPANYCODE, a.FUNDCODE, a.FUNDDESCRIPTION FROM FUNDMASTER a, PLANFUNDDESC b, PLANDESC c, COVERAGE D, COVERAGEFUNDALLOC E
		WHERE c.FUNDCONTROLDESCID=b.FUNDCONTROLDESCID
        AND (b.FUNDCODE=a.FUNDCODE AND  E.FUNDCODE=A.FUNDCODE  )
        AND (
        <dynamic prepend=" C.COVERAGECODE IN ">
        	<iterate property="planCode" open="(" close=")" conjunction=", ">
	            	'$planCode[]$'
	        </iterate>
    	</dynamic>
        AND C.COVERAGECODE=D.COVERAGECODE) AND D.COVERAGEPHASECODE='01'
		AND (a.COMPANYCODE=c.COMPANYCODE AND E.COMPANYCODE = D.COMPANYCODE AND C.COMPANYCODE = D.COMPANYCODE)
        AND (
        <dynamic prepend=" LEFT(D.POLICYNUMBER,4) IN ">
        	<iterate property="prefix" open="(" close=")" conjunction=", ">
	            	'$prefix[]$'
	        </iterate>
    	</dynamic>
        AND E.POLICYNUMBER = D.POLICYNUMBER)
    </select>

contoh diatas akan menghasilkan dinamis query seperti COVERAGECODE IN (‘AAAX’,'AAAB’) AND LEFT(POLICYNUMBER,4) IN (’3011′,’3022′).