如何在JSFbean中发送表单输入值和调用方法

如何在JSFbean中发送表单输入值和调用方法,jsf,input,submit,facelets,managed-bean,Jsf,Input,Submit,Facelets,Managed Bean,我正在构建一个JSF应用程序。我定义了GUI,并使用select执行select语句查询数据库 现在我必须执行insert语句,但我不知道如何读取JSF输入组件(如)的值,并将其发送给执行insert的bean 值是否应该通过faces config.xml映射,这样我就可以在Java代码中使用它?您需要将所有组件放入中,并通过类似{bean.property}的EL表达式将它们的值属性绑定到bean属性,由一对getter/setter支持。如果设置正确,当表单通过组件以相同的形式提交时,JS

我正在构建一个JSF应用程序。我定义了GUI,并使用select执行select语句查询数据库

现在我必须执行insert语句,但我不知道如何读取JSF输入组件(如
)的
值,并将其发送给执行insert的bean


值是否应该通过
faces config.xml
映射,这样我就可以在Java代码中使用它?

您需要将所有
组件放入
中,并通过类似
{bean.property}
的EL表达式将它们的
属性绑定到bean属性,由一对getter/setter支持。如果设置正确,当表单通过
组件以相同的形式提交时,JSF将自动设置bean中的值。您可以通过像
{bean.action}
这样的EL表达式在
组件的
action
属性中指定bean操作方法,该表达式指向裸方法
action()
。所有提交的值都可以通过通常的Java方式立即使用

给出这个JSF表单示例,其中包含一个输入字段和一个选择字段:

<h:form>
    <h:inputText value="#{bean.text}" required="true" />
    <h:selectOneMenu value="#{bean.choice}" required="true">
        <f:selectItem itemValue="#{null}" />
        <f:selectItem itemValue="One" />
        <f:selectItem itemValue="Two" />
        <f:selectItem itemValue="Three" />
    </h:selectOneMenu>
    <h:commandButton value="submit" action="#{bean.submit}" />
    <h:messages />
    <h:outputText value="#{bean.result}" />
</h:form>
就这些。将常规表单转换为ajax表单需要在命令组件中嵌套
,如下所示

<h:commandButton value="submit" action="#{bean.submit}">
    <f:ajax execute="@form" render="@form" />
</h:commandButton>

您可以在下面找到另一个示例和有价值的链接

请注意,无论您打算对提交的值做什么,JSF都不负责。例如,操纵它、传递到另一个类、将它保存在数据库中等等。所有这些都与JSF无关。作为一个基于HTML表单的框架,它已经完成了以可用Java变量的形式向您提供提交值的工作。剩下的由你决定


为了研究下一步,此时您应该做的只是假设您已经准备好了一堆/硬编码的变量,而不是一个完整的基于JSF的用户界面。例如,为了保存到数据库中的值,人们通常使用EJB之类的业务服务层框架,而EJB又使用JPA之类的持久层框架。有些人甚至使用“普通的”JDBC来实现这一点。有关具体示例的更多链接,请从这里开始:。

如果我们假设有一个实体类具有文本和数字getter/setter,那么如何使用该实体而不是再次定义getter/setter?@hallaji继续回答中的最后一个链接。
<h:commandButton value="submit" action="#{bean.submit}">
    <f:ajax execute="@form" render="@form" />
</h:commandButton>