6
JSF 2.0を使用して複合コンポーネントについて学習しています。コンポーネントでバッキングBeanのメソッドをトリガできるようにしたいので、簡単な例を作成しました。複合コンポーネントへのアクションメソッドの追加
これは私が作成したコンポーネントである:これは私が
<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"
xmlns:custom="http://java.sun.com/jsf/composite/custom">
...
<h:body>
<custom:demoCustomComponent attribute1="#{demoBB.value1 }" attribute2="#{demoBB.value2 }" actionBtnText="Button text!" actionBtn="#{demoBB.act}"/>
</h:body>
JSFページでそれを使用し、これはへの支援を与えるバッキングBeanがいかにある
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:composite="http://java.sun.com/jsf/composite">
<composite:interface>
<composite:attribute name="attribute1"/>
<composite:attribute name="attribute2"/>
<composite:attribute name="actionBtnText"/>
<composite:attribute name="actionMethod" method-signature="java.lang.String action()"/>
</composite:interface>
<composite:implementation>
<h:form>
<h:inputText value="#{cc.attrs.attribute1}"/>
<br/>
<h:inputText value="#{cc.attrs.attribute2}"/>
<br/>
<h:commandButton action="#{cc.attrs.actionMethod}" value="#{cc.attrs.actionBtnText}"/>
</h:form>
</composite:implementation>
</html>
コンポーネントがあるページ
@Named("demoBB")
@RequestScoped
public class DemoBB {
private String value1;
private String value2;
public String getValue1() {
return value1;
}
public String act() {
System.out.println("Input 1: " + value1 + "\nInput 2: " + value2);
return null;
}
//Getters and setters
public void setValue1(String value1) {
this.value1 = value1;
}
public String getValue2() {
return value2;
}
public void setValue2(String value2) {
this.value2 = value2;
}
}
部品が細かいレンダリングするようだが、私はボタンを押したときに、私が言うの例外を取得:
javax.faces.FacesException:EL式を使用してページを使用して から複合コンポーネントを解決できませんが「# {cc.attrs.actionMethod} '
コンポーネントのインターフェイスまたは実装で間違いを犯しましたか?なぜ機能しないのですか?
アップ、私は今、どのような愚かな間違いを参照してください。私は常にcustomComponentを見ていましたが、私の間違いはindex.xhtmlにありました。私は属性の名前を間違って書きました:)ありがとう! – sfrj