PrimeFaces ExceptionHandler



Exception, programın çalışma zamanı sırasında meydana gelen durumlarıdır.
Exception handling, hata algılandıktan sonra yapılan müdahale sürecine denir.

PrimeFaces’te bu işlem için bulunan bileşeni bir örnek ile atmaya çalışacağım.

Öncelikle bir button ekleyelim bu butonun actionListener ına nullpointerexception gönderen bir metod yazalım.
index.xhtml
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://xmlns.jcp.org/jsf/html"
      xmlns:p="http://primefaces.org/ui">
    <h:head>
        <title>Facelet Title</title>
    </h:head>
    <h:body>
        <h:form>
            <p:commandButton value="Get" actionListener="#{bean.getNullPointer}" ajax="false"/>
        </h:form>
    </h:body>
</html>



Bean.java
import javax.faces.bean.ManagedBean;
 
/**
 *
 * @author Omer Faruk Kurt
 * @blog http://kurtomerfaruk.com
 * @Created on date 27/02/2017 20:32:52 
 */
@ManagedBean
public class Bean implements java.io.Serializable{
    public void getNullPointer(){
        throw new NullPointerException();
    }
}






Ve şimdi de PrimeFaces’in ExceptionHandler bileşenini kullanarak yapalım. Verilen hatayı bir dialog içerisinde programın kırılmasını engelleyerek ve kullanıcıya verilen hatayı gösterelim.

Bunun için öncelikle faces-config.xml dosyasına aşağıdaki parametreleri eklememiz gerekmektedir.
<application>
        <el-resolver>
            org.primefaces.application.exceptionhandler.PrimeExceptionHandlerELResolver
        </el-resolver>
    </application>
    <factory>
        <exception-handler-factory>
            org.primefaces.application.exceptionhandler.PrimeExceptionHandlerFactory
        </exception-handler-factory>
    </factory>



index.xhtml 
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://xmlns.jcp.org/jsf/html"
      xmlns:p="http://primefaces.org/ui">
    <h:head>
        <title>Facelet Title</title>
    </h:head>
    <h:body>
        <h:form>
            <p:commandButton value="Get" actionListener="#{bean.getNullPointer}"/>
 
            <p:ajaxExceptionHandler type="java.lang.NullPointerException"
                                    update="dialog"
                                    onexception="PF('dlg').show();" />
 
            <p:dialog id="dialog" header="Exception" widgetVar="dlg"
                      height="500px">
                Message: #{pfExceptionHandler.message} <br/>
                StackTrace: <h:outputText value="#{pfExceptionHandler.formattedStackTrace}" escape="false" /> <br />
 
            </p:dialog>
        </h:form>
    </h:body>
</html>



Sonuç


Yorum Gönder

0 Yorumlar