作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的托管 bean 从 jsf 页面中的一个简单表单获取空值。实际上,我有一个相当发达的界面,但即使是一个简单的表单也会出现问题。
(JSF 2.1.0、java 编译器 1.6、primefaces 6.0 和 tomcat7)
这似乎是一个重复的问题。但是,5 天前我正在寻找这个奇怪问题的解决方案。我找到了很多解决方案,但它对我不起作用。也许我不太理解它们是 BalusC (commandButton/commandLink/ajax action/listener method not invoked or input value not updated) 的答案。
JSF 页面:
<?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:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui"
xmlns:c="http://java.sun.com/jsp/jstl/core">
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</h:head>
<h:body>
<h:form>
<h:inputText value="#{notification.typeSelected}"></h:inputText>
<p:commandButton value="Enregistrer"
actionListener="#{notificationBean.filtrer}" process="@this"
style="float:right">
</p:commandButton>
</h:form>
</h:body>
</html>
托管 bean:
package presentation;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.event.ActionEvent;
//import javax.faces.event.ValueChangeEvent;
import javax.faces.model.SelectItem;
import org.apache.log4j.Logger;
import entities.Contrainte;
import metier.ContrainteMetier;
import metier.ContrainteMetierImp;
@ManagedBean
@SessionScoped
public class NotificationBean implements java.io.Serializable{
private static final long serialVersionUID = 1L;
public static Logger log = Logger.getLogger(ProjetMODBean.class);
private ContrainteMetier contrainteM = new ContrainteMetierImp();
private List<Contrainte> contrainteL;
private List<Contrainte> filtreL;
private List<SelectItem> classificationL;
private String typeSelected;
//Constructeurs
public NotificationBean() {
}
public NotificationBean(ContrainteMetier contrainteM, List<Contrainte> contrainteL) {
super();
this.contrainteM = contrainteM;
this.contrainteL = contrainteL;
}
@PostConstruct
public void init() {
contrainteL = contrainteM.findAll();
classificationL = new ArrayList<SelectItem>();
for(Contrainte c:contrainteL)
{//Attention, il ne faut pas dupliquer les types dans la liste déroulante
classificationL.add(new SelectItem(c.getClassification()));
}
log.info(" dans init je filtre selon: " + getTypeSelected());
}
//Méthodes
public void filtrer(ActionEvent e)
{
setTypeSelected(typeSelected);
log.info("je filtre selon: " + getTypeSelected());
}
控制台输出:
2017-03-24 18:06:43 INFO ProjetMODBean:57 - dans init je filtre selon: null
2017-03-24 18:06:43 INFO ProjetMODBean:76 - je filtre selon: null
我试图纠正我的错误,但我忘记了一个细节。
最佳答案
恕我直言,您的问题是 process="@this"
将其更改为 process="@form"
(这是默认值,因此只有在您有充分理由时才更改它) 或将 id 添加到输入并使用 process="@this idOfInputField"
。
参见 question .
请用英文完整发布问题。我假设//Méthodes 表示字段的 getter/setter(JSF 需要输入的 getter/setter)。
服务也可以使用注入(inject)。将方法头从 public void filtrer(ActionEvent e)
更改为 public void filtrer()
关于maven - 无法从jsf页面获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43006778/
我是一名优秀的程序员,十分优秀!