22
Feb
08

Error handling, struts 1.x

Dalam teknik pemrogramman MVC dengan menerapkan framework struts begitu banyak kemudahan yang diberikan. Salah satunya adalah penanganan error dan pemberian pesan error itu sendiri. Misalnya, perhatikan form html dibawah:





    
        <title>Error Handling Test</title>
    
    
        
        
            <table>
                <tr>
                    <td>Username: </td>
                    <td></td>
                </tr>
                <tr>
                    <td>
                        
                    </td>
                </tr>
            </table>
        
    

tag <html:errors/> merupakan tag dimana pesan error akan muncul. Format tampilan errornya sama sperti kita menggunakan tag <ol><li></li></ol> pada tag html biasa.
Form di atas merupakan form dimana saya diminta memasukkan username aja untuk coba”. Kemudian saya buat setter/getternya, sbb:


package com.myapp.beans;

import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;

/**
 *
 * @author programer05
 */
public class Beans extends ActionForm {
    private String username;

    public Beans() {}

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public ActionErrors validate(ActionMapping mapping,
            HttpServletRequest request) {
        String name = this.getUsername();
        ActionErrors errors = new ActionErrors();
        if(name.length()<1 || name==null) {
            errors.add("username", new ActionMessage("errors.username"));
        }
        return errors;
    }

}&#91;/sourcecode&#93;
potongan kode ini:
&#91;sourcecode language="java"&#93;

public ActionErrors validate(ActionMapping mapping,

            HttpServletRequest request) {

        String name = this.getUsername();

        ActionErrors errors = new ActionErrors();

        if(name.length()<1 || name==null) {

            errors.add("username", new ActionMessage("errors.username"));

        }

        return errors;

    }&#91;/sourcecode&#93;
merupakan method yang akan melakukan validasi terhadap input dari user. Tipe kembaliannya berupa objek <b>ActionErrors</b>. Jadi, jika ada tambahan pesan error yang lain kita tinggal menggunakan method add(). Nanti untuk menampilkan kita tidak perlu repot, karena aplikasi akan mengatur tampilannya seperti ini:
<ul>
	<li>Pesan error 1</li>
	<li>Pesan error 2</li>
	<li>dst...</li>
</ul>
Kemudian untuk kode [...] new <b>ActionMessage("errors.username") </b> [...], string yg ada di dalamnya merupakan keyword yg ada pada file properties dari struts, sbb:



errors.header=<UL>
errors.prefix=<LI>
errors.suffix=</LI>
errors.footer=</UL>
errors.invalid={0} is invalid.
errors.maxlength={0} can not be greater than {1} characters.
errors.minlength={0} can not be less than {1} characters.
errors.range={0} is not in the range {1} through {2}.
errors.required={0} is required.
errors.byte={0} must be an byte.
errors.date={0} is not a date.
errors.double={0} must be an double.
errors.float={0} must be an float.
errors.integer={0} must be an integer.
errors.long={0} must be an long.
errors.short={0} must be an short.
errors.creditcard={0} is not a valid credit card number.
errors.email={0} is an invalid e-mail address.
errors.cancel=Operation cancelled.
errors.detail={0}
errors.general=The process did not complete. Details should follow.
errors.token=Request could not be completed. Operation is not in sequence.
welcome.title=Struts Application
welcome.heading=Struts Applications in Netbeans!
welcome.message=It's easy to create Struts applications with NetBeans.
errors.username=<h2>Invalid username</b>

tinggal dicari saja yang mana keywordnya :twisted:Setelah itu, qta edit file configurasi struts(struts-config.xml) yang akan mengatur bagaimana navigasi aplikasi dan bgm jika terjadi kesalahan. Berikut potongan listing struts-config.xml:


[...]


    <form>
        <form name="formBeans" />
    </form>

    

    

    
        
    

    
        
        
                    
        
    

[...]

saya asumsikan anda sudah cukup paham mengenai isi file struts-config.xml ini. Bagian penting dari error handling yang saya maksud adalah pada bagian validate=”true”, yang memberitahukan kepada aplikasi bahwa harus melakukan validasi terlebih dahulu terhadap input user. Kemudian input=”/main.jsp”, yang memberitahukan bahwa input yang perlu divalidasi berasal dari halaman /main.jsp, sehingga aplikasi juga akan tahu jika memang ada kesalahan, kepada user akan dikembalikan halaman /main.jsp sekaligus dengan pesan error-nya. Action dari path /action terdapat pada kelas com.myapp.actions.Actions, berikut isi filenya:


package com.myapp.actions;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
import org.apache.struts.action.ActionMapping;

/**
 *
 * @author programer05
 */
public class Actions extends Action {

    public Actions(){}

    public ActionForward execute(ActionMapping mapping,
            ActionForm form,
            HttpServletRequest request,
            HttpServletResponse response) {

        return (mapping.findForward("success"));
    }

}

Kelas action di atas hanya berisi return value saja, jadi jika memang tidak ada kesalahan langsung diforward kehalaman yang lain. Cukup mudah saya rasa. Paling tidak coding lebih teratur :mrgreen:Later 😈

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


%d bloggers like this: