Java 将支持bean实例作为另一个支持bean方法的参数传递

Java 将支持bean实例作为另一个支持bean方法的参数传递,java,jsf,parameters,javabeans,Java,Jsf,Parameters,Javabeans,在用户通过表单向我的支持bean填充信息之后,我想用Java代码处理实例(例如JAXB编组) 所以现在我是这样做的: <% OtherBean.method(myBackingBean); %> 如果我是对的,这不是一个最新的解决方案:)那么我如何才能以“更好”的方式实现这一点呢 提前感谢,, Daniel。您可以将一个支持bean作为另一个bean的实例变量。并在spring或任何您正在使用的工具中配置它。您可以使用一个支持bean作为另一个bean的实例变量。然后在spri

在用户通过表单向我的支持bean填充信息之后,我想用Java代码处理实例(例如JAXB编组)

所以现在我是这样做的:

<% OtherBean.method(myBackingBean); %>

如果我是对的,这不是一个最新的解决方案:)那么我如何才能以“更好”的方式实现这一点呢

提前感谢,,
Daniel。

您可以将一个支持bean作为另一个bean的实例变量。并在spring或任何您正在使用的工具中配置它。

您可以使用一个支持bean作为另一个bean的实例变量。然后在spring或您正在使用的任何工具中对其进行配置。

一个解决方案是向bean中添加一个操作方法——可以让它自己处理

例如,这个简单的bean:

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/faces-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>

simpleBean
simplebean,simplebean
一场
…可以使用此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}。这必须是一个不接受任何参数并返回字符串参数(如果需要,可用于页面导航)的公共方法


这不是实现这一点的唯一方法,但它相当简单。

一个解决方案是向bean中添加一个操作方法——可以让它自己处理

例如,这个简单的bean:

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/faces-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>

simpleBean
simplebean,simplebean
一场
…可以使用此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}。这必须是一个不接受任何参数并返回字符串参数(如果需要,可用于页面导航)的公共方法


这不是唯一的方法,但它相当简单。

再次感谢你,麦克道尔!我没想过把“那个”逻辑放在同一个bean中,不过这很明显。所以我只是在“processData”中调用所需的方法,如:method(this),并且所有方法都有效。再次感谢McDowell!我没想过把“那个”逻辑放在同一个bean中,不过这很明显。所以我只是在“processData”中调用所需的方法,比如:method(this),并且所有的方法都可以工作。