我正在尝试在XHTML / JSF / Spring应用程序中使用一些代码,通过该代码我将一个ID发送到bean函数并期望返回一个字符串。我还没有找到关于这个的可理解的教程,也没有在SO上找到任何已回答的问题。
XHTML:
<h:form>
<h:inputText id="inputId" value="#{npBean.idString}"/>
<a4j:commandButton value="get def" render="out">
<f:param value="#{npBean.idString}" name="id" />
<f:setPropertyActionListener target="#{npBean.definition}"/>
</a4j:commandButton>
<a4j:outputPanel id="out">
<h:outputText id="outputId" value="#{npBean.def}"
rendered="#{not empty npBean.def}"/>
</a4j:outputPanel>
</h:form>
爪哇:
public String getDefinition(int id)
{
def = this.getXService().getXData(id).getDefinition();
return def;
}
显示的所有值都包含bean中的getter和setter。
答案 0 :(得分:1)
我们基本上做了什么:
value
组件的<h:inputText>
映射到托管bean中的属性(带有getter / setter)(名为myBean
)reRender
组件的<a4j:commandButton>
属性,我们指出在单击按钮时要重新呈现(刷新)页面上的哪个组件。invokeService()
方法,并更新managedBean的其他属性。<h:panelGroup>
中,我们有几个<h:outputText>
组件,并且我们指定了必须在页面上显示组件的rendered
属性。这是* .xhtml示例:
<ui:composition 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:a4j="http://richfaces.org/a4j"
xmlns:rich="http://richfaces.org/rich">
<a4j:form>
<h:panelGrid columns="3">
<h:outputText value="String value:" />
<h:inputText value="#{myBean.value}" />
<a4j:commandButton value="Click" reRender="out">
<a4j:actionListener listener="#{myBean.invokeService}" />
</a4j:comandButton>
</h:panelGrid>
</a4j:form>
<rich:spacer height="7"/>
<br />
<h:panelGroup id="out">
<h:outputText value="Service returned: " rendered="#{not empty myBean.result}" />
<h:outputText value="#{myBean.result}" />
</h:panelGroup>
</ui:composition>
托管豆:
@ManagedBean(name = "myBean")
@SessionScoped //for example
public class MyBean {
private String value;
private String result;
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public String getResult() {
return result;
}
public void invokeService(ActionEvent actionEvent) {
this.result = "Hello, " + value + "!";
}
}
正如@Luiggi所提到的,访问器方法必须符合以下约定(如果我们假设您在托管bean中有private <some-type> property;
。)
public <some-type> getProperty {
return property;
}
public void setProperty(<some-type> property) {
this.property = property:
}
为了了解RichFaces
组件的工作原理以及良好的代码示例,我建议您打开this地址并使用组件。