首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何从.jsf页面adf 12c中的函数中获取返回值?

在Oracle ADF 12c中,.jsf页面通常与后端的Java代码(如Managed Bean或Backing Bean)进行交互。要从.jsf页面中的JavaScript函数获取返回值并将其传递给后端的Java代码,可以使用以下几种方法:

方法一:使用JavaScript和ADF Faces的客户端事件

你可以使用JavaScript在客户端执行操作,然后通过ADF Faces的客户端事件将结果传递给后端的Managed Bean。

步骤:

  1. 在.jsf页面中定义JavaScript函数
  • <af:resource type="javascript"> function getValueFromJS() { // 这里是你的JavaScript逻辑 var value = "some value"; // 这是你要返回的值 return value; } </af:resource>
  • 在.jsf页面中定义一个隐藏的输入框和按钮
  • <af:inputText id="hiddenInput" value="#{backingBean.hiddenValue}" visible="false"/> <af:commandButton id="hiddenButton" actionListener="#{backingBean.processValue}" visible="false"/>
  • 在.jsf页面中定义一个JavaScript函数来调用后端方法
  • <af:resource type="javascript"> function callBackend() { var value = getValueFromJS(); var hiddenInput = AdfPage.PAGE.findComponentByAbsoluteId('hiddenInput'); hiddenInput.setValue(value); var hiddenButton = AdfPage.PAGE.findComponentByAbsoluteId('hiddenButton'); hiddenButton.click(); } </af:resource>
  • 在.jsf页面中触发JavaScript函数
  • <af:commandButton text="Get Value" onclick="callBackend(); return false;"/>
  • 在Managed Bean中处理值
  1. @ManagedBean @RequestScoped public class BackingBean { private String hiddenValue; public String getHiddenValue() { return hiddenValue; } public void setHiddenValue(String hiddenValue) { this.hiddenValue = hiddenValue; } public void processValue(ActionEvent actionEvent) { // 处理从JavaScript传递过来的值 System.out.println("Value from JavaScript: " + hiddenValue); } }

方法二:使用ADF Faces的JavaScript API和Partial Page Rendering (PPR)

你可以使用ADF Faces的JavaScript API和Partial Page Rendering (PPR)来更新页面组件并将值传递给后端。

步骤:

  1. 在.jsf页面中定义JavaScript函数
  • <af:resource type="javascript"> function getValueFromJS() { // 这里是你的JavaScript逻辑 var value = "some value"; // 这是你要返回的值 return value; } </af:resource>
  • 在.jsf页面中定义一个隐藏的输入框
  • <af:inputText id="hiddenInput" value="#{backingBean.hiddenValue}" visible="false"/>
  • 在.jsf页面中定义一个JavaScript函数来更新隐藏输入框的值并触发PPR
  • <af:resource type="javascript"> function updateBackend() { var value = getValueFromJS(); var hiddenInput = AdfPage.PAGE.findComponentByAbsoluteId('hiddenInput'); hiddenInput.setValue(value); AdfPage.PAGE.queueEvent(new AdfCustomEvent(hiddenInput, "valueChange", null, false)); } </af:resource>
  • 在.jsf页面中触发JavaScript函数
  • <af:commandButton text="Get Value" onclick="updateBackend(); return false;"/>
  • 在Managed Bean中处理值
  1. @ManagedBean @RequestScoped public class BackingBean { private String hiddenValue; public String getHiddenValue() { return hiddenValue; } public void setHiddenValue(String hiddenValue) { this.hiddenValue = hiddenValue; } public void processValue(ValueChangeEvent valueChangeEvent) { // 处理从JavaScript传递过来的值 System.out.println("Value from JavaScript: " + hiddenValue); } }

总结

通过以上方法,你可以在Oracle ADF 12c中从.jsf页面的JavaScript函数获取返回值并将其传递给后端的Managed Bean。方法一使用了隐藏的输入框和按钮来传递值,而方法二则使用了ADF Faces的JavaScript API和Partial Page Rendering (PPR)来更新页面组件并触发后端处理。选择哪种方法取决于你的具体需求和应用场景。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券