jsf 后台参数到页面
其中一个JSF 2+不错的特点出现在Java企业版的JavaEE 6 +,是你可以传递参数给喜欢的commandButton和commandLink组件的任何动作元件操作方法。
基于此,您可以最小化托管bean中的方法数量。另外,为了最小化在bean内部设置的许多参数,动作可以使用这些参数来决定导航逻辑,如果您的bean的作用域大于请求作用域,则可以减少内存消耗。
这个怎么运作:
- 打开您最喜欢的IDE,我将使用Netbeans 7.4.1 。 (使用任何支持JavaEE 6或7的IDE)。
- 创建Web项目。
文件–>新建项目–> Java Web(左窗格) –> Web应用程序(右窗格) –>下一步。 - 随便命名(对我来说就是JSFeatures ) –>下一步–>服务器Glassfish4 –> Java EE 7 Web配置文件–>上下文路径“ / JSFeatures” –>下一步。
- 从框架中选择“ Java Server Faces ” -> Finish。
- 您应该具有以下项目结构:
- 右键单击JSFeatures项目->新的“ JSF Managed Bean ”。 及其名称和配置如下:
- 在编辑器页面中打开bean的情况下,将以下代码复制并粘贴到package语句之后:
import javax.faces.bean.ManagedBean; import javax.faces.bean.RequestScoped; /** * @author mohamed_taman */ @ManagedBean(name = "jSFeatBean") @RequestScoped public class JSFeatursBean { private String result; public String getResult() { return result; } public void setResult(String result) { this.result = result; } public JSFeatursBean() { } public Object addNumbers(int num1,int num2) { setResult("Hi there I am an action method to add numbers."); return null; } }
- 打开默认生成的index.xhtml ,然后复制以下代码并将其粘贴到文件中:
<?xml version='1.0' encoding='UTF-8' ?> <!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:h="http://xmlns.jcp.org/jsf/html"> <h:head> <title>Facelet Title</title> </h:head> <h:body> Hello from Facelets <h:form> <p> <h:outputText value="#{jSFeatBean.result}"/> </p> <h:commandButton type="submit" value="Submit" action="#{jSFeatBean.addNumbers}"/> </h:form> </h:body> </html>
- 右键单击index.xhtml,然后单击–> 运行 ; 您应该会看到以下内容:
- 单击提交按钮,观察h:outputText值,其值应为“ Hi,我是一个操作方法。 “
- 现在一切正常。 让我们做我需要演示的实际工作。
- 将addNumbers()方法签名更改为以下内容( 无需重新启动应用程序服务器 ):
- Bean方法:
public Object addNumbers(int num1) { int res = 0; res = num1; if (res == 0) { setResult("Hi there I am an action method to add numbers."); } else { setResult("Final result is: " + res); } return null; }
- 然后,您的按钮呼叫到:
<h:commandButton type="submit" value="Submit" action="#{jSFeatBean.addNumbers(1)}"/>
- 按下按钮,输出文本值应为:
Final result is: 1
- Bean方法:
- 再做一次:
- Bean方法:
public Object addNumbers(int num1, int num2) { int res = 0; res = num1 + num2; if (res == 0) { setResult("Hi there I am an action method to add numbers."); } else { setResult("Final result is: " + res); } return null; }
- 然后,您的按钮呼叫到:
<h:commandButton type="submit" value="Submit" action="#{jSFeatBean.addNumbers(1,2)}"/>
- 按下按钮,输出文本值应为:
Final result is: 3
- Bean方法:
注意:该参数可能具有不同的参数类型,但预计不会是同一类型,该方法也可能返回用于导航到其他页面的值,在此示例中,该参数返回null表示在同一页面上。
我非常喜欢此功能,非常有用,方便,编码愉快。
资源:
jsf 后台参数到页面