gpt4 book ai didi

java - 如何使用 JSF Richfaces AJAX 向/从 bean 函数发送/接收数据?

转载 作者:行者123 更新时间:2023-12-01 14:32:50 26 4
gpt4 key购买 nike

我正在尝试让一些代码在 XHTML/JSF/Spring 应用程序中工作,通过这些代码我将 ID 发送到 bean 函数并期望返回一个字符串。我还没有找到关于此的可以理解的教程,也没有找到任何已回答的问题。

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>

Java:

public String getDefinition(int id)
{
def = this.getXService().getXData(id).getDefinition();
return def;
}

显示的所有值在 bean 中都有其 getter 和 setter。

最佳答案

我们基本上做什么:

  1. 映射value <h:inputText>的托管 bean 中属性(使用 getter/setter)的组件(称为 myBean )
  2. 通过使用 reRender <a4j:commandButton> 的属性组件,我们指出单击按钮时要重新渲染(刷新)页面上的哪个组件。
  3. 单击按钮时,invokeService()执行 ManagedBean 中的方法并更新 ManagedBean 的其他属性。
  4. <h:panelGroup>下面,我们有几个<h:outputText>组件和 rendered当组件必须显示在页面上时我们指定的属性。
  5. 探索托管 bean,唯一需要的是属性的访问器,该属性保存服务调用的结果。

这是 *.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>

托管bean:

@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解决并使用组件。

关于java - 如何使用 JSF Richfaces AJAX 向/从 bean 函数发送/接收数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16719926/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com