CDI で @Produces メソッドの使用法を学ぼうとしています。私はそれをテストするために非常に単純な Web アプリを作成しました。私がやろうとしているのは、基本的には、フォームの送信時に、1 つの Bean (コントローラー) の値を別の Bean (Cont) に渡すことです。
問題は、str 値が「注入」されないことです。明らかに、これを行う他の方法があります (コントローラー全体を挿入する) が、私はこの特定の方法を学ぼうとしています。
.xhtml
<!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:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
</h:head>
<h:body>
<h:form>
<h:outputText value="Input: " />
<h:inputText value="#{str}" />
<br />
<br />
<h:outputText value="#{cont.str}" />
<br />
<br />
<h:commandButton value="Submit">
</h:commandButton>
</h:form>
</h:body>
コントローラー.java
@Named
@SessionScoped
public class Controller implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@Produces
@Named("str")
private String str;
public String getStr() {
return str;
}
public void setStr(String str) {
this.str = str;
}
}
Cont.java
@Named
@SessionScoped
public class Cont implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@Inject
private String str;
public String getStr() {
return str;
}
public void setStr(String str) {
this.str = str;
}
}