2009-05-07 2 views
0

После того, как пользователь заполнит мой бэк-файл информацией через формы, я хочу обработать экземпляр в Java-коде (например, JAXB-сортировка).Передача экземпляра bean-компонента в качестве параметра для другого метода bean-компонента

Так что на данный момент я делаю это так:

<% OtherBean.method(myBackingBean); %> 

что - если я прав - не совсем до даты решения :) Так как я могу сделать это произошло в 'лучший путь?

Заранее благодарен, Daniel.

ответ

3

Одним из решений является добавление к компоненту метода действий - возможно, он сам обработает.

Например, эта простая фасоль:

public class SimpleBean { 

    private String forename; 
    private String surname; 

    public String processData() { 
    // TODO: real work 
    System.out.println("forename=" + forename); 
    System.out.println("surname=" + surname); 
    return null; // optional navigation rule 
    } 

    public String getForename() { 
    return forename; 
    } 

    public void setForename(String forename) { 
    this.forename = forename; 
    } 

    public String getSurname() { 
    return surname; 
    } 

    public void setSurname(String surname) { 
    this.surname = surname; 
    } 

} 

... определены в WEB-INF/лицах-config.xml:

<managed-bean> 
    <managed-bean-name>simpleBean</managed-bean-name> 
    <managed-bean-class>simplebean.SimpleBean</managed-bean-class> 
    <managed-bean-scope>session</managed-bean-scope> 
</managed-bean> 

... может быть обработан с помощью этого JSP :

<?xml version="1.0" encoding="UTF-8" ?> 
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:f="http://java.sun.com/jsf/core"> 
    <jsp:directive.page language="java" 
    contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" /> 
    <jsp:text> 
    <![CDATA[<?xml version="1.0" encoding="UTF-8" ?>]]> 
    </jsp:text> 
    <jsp:text> 
    <![CDATA[<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">]]> 
    </jsp:text> 
    <html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
    <title>Enter Name</title> 
    </head> 
    <body> 
    <f:view> 
    <h:form> 
     <h:panelGrid columns="2"> 
     <h:outputText value="forename:" /> 
     <h:inputText id="it1" value="#{simpleBean.forename}" /> 
     <h:outputText value="surname:" /> 
     <h:inputText id="it2" value="#{simpleBean.surname}" /> 
     </h:panelGrid> 
     <h:commandButton action="#{simpleBean.processData}" 
     value="process" /> 
    </h:form> 
    </f:view> 
    </body> 
    </html> 
</jsp:root> 

Обратите внимание на метод привязки # {simpleBean.processData}. Это должен быть открытый метод, который не принимает аргументов и возвращает аргумент String (который можно использовать для навигации по страницам, если это необходимо).

Это не единственный способ сделать это, но это довольно просто.

+0

Еще раз спасибо McDowell! Не думал о том, чтобы поместить «эту» логику в один и тот же компонент, однако это довольно очевидно. Поэтому я просто вызываю необходимый метод в «processData», например: method (this), и все работает. –

0

у вас может быть один бэк-бэк в качестве переменной экземпляра другого компонента. и настроить его весной или независимо от того, что вы используете.