Mir*_*cea 8 jsf input facelets submit managed-bean
我正在构建一个JSF应用程序.我定义了GUI并使用select语句对select语句进行查询.
现在我必须执行insert语句,但我不知道如何读取valueJSF输入组件<h:inputText>,并将其发送到执行插入的bean.
应该<h:inputText>映射值faces-config.xml,所以我可以在我的Java代码中使用它吗?
Bal*_*usC 26
您需要将所有<h:inputXxx>/ <h:selectXxx>组件放入a <h:form> 并value通过EL表达式将其属性绑定到bean属性,例如#{bean.property},由getter/setter对支持.正确设置后,当表单以<h:commandXxx>相同的形式通过组件提交时,JSF将自动设置bean中的值.您可以通过EL表达式action在<h:commandXxx>组件的属性中指定bean操作方法,类似于#{bean.action}指向裸方法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>
Run Code Online (Sandbox Code Playgroud)
以下bean将提交的值打印到stdout,证明JSF已经在操作方法中访问它之前很久就设置了值.
package com.example;
import javax.inject.Named;
import javax.enterprice.context.RequestScoped;
@Named // Use @javax.faces.bean.ManagedBean on outdated environments.
@RequestScoped // Use @javax.faces.bean.RequestScoped on outdated environments.
public class Bean {
private String text;
private String choice;
private String result;
public void submit() {
result = "Submitted values: " + text + ", " + choice;
System.out.println(result);
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public String getChoice() {
return choice;
}
public void setChoice(String choice) {
this.choice = choice;
}
public String getResult() {
return result;
}
}
Run Code Online (Sandbox Code Playgroud)
就这样.将常规表单转换为ajax表单是<f:ajax>在命令组件中嵌套a的问题,如下所示.
<h:commandButton value="submit" action="#{bean.submit}">
<f:ajax execute="@form" render="@form" />
</h:commandButton>
Run Code Online (Sandbox Code Playgroud)
您可以在我们的JSF wiki页面底部找到另一个示例和有价值的链接.
请注意,无论您打算如何处理提交的值都超出了JSF的责任范围.例如,操纵它,传入另一个类,将其保存在数据库中等等.这一切都与JSF无关.它具有基于HTML表单的框架,它已经完成了为您提供可用Java变量风格的提交值的工作.剩下的由你决定.
为了研究下一步,你应该在这一点上做,好像你已经有一堆预备/硬编码变量而不是整个基于JSF的用户界面.例如,为了保存到数据库中的值,人们通常使用像EJB这样的业务服务层框架,后者又使用像JPA这样的持久层框架.有些人甚至使用"普通香草"JDBC.有关具体示例的更多链接,请从此处开始:JSF Controller,Service和DAO.
| 归档时间: |
|
| 查看次数: |
38624 次 |
| 最近记录: |