我正在尝试在我的应用程序中获取当前用户的id,当他创建一个文档以使用用户的id注册该文档时。但是当使用<f:viewParam>
时,doument bean中的用户id总是为null。
这是我的代码:
<h:form id="form">
<br></br>
<div class="centre">
<p:graphicImage url="images/usericon.png" id="usericon"
alt="utilisateur IsetN" style="width:100px;height:100px"></p:graphicImage>
</div>
<br></br>
<div class="centre">
<p:inputText placeholder="E-mail" required="true" id="email"
value="#{userBean.email}" requiredMessage="E-mail obligatoire">
<f:validateRegex pattern="[\w\.-]*[a-zA-Z0-9_]@[\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]" />
</p:inputText>
<p:message for="email"></p:message>
</div>
<br></br>
<div class="centre">
<p:password id="motdepasse" value="#{userBean.password}" required="true"
placeholder="Mot de passe" requiredMessage="Mot de passe Obligatoire">
</p:password>
<p:message for="motdepasse"></p:message>
</div>
<br></br>
<div class="centre">
<h:commandButton id="login" value="Connexion" action="#{userBean.login}" update="form" >
<f:param name="IdUser" value="#{userBean.cin}" >
</f:param>
</h:commandButton>
<p:message for="login"></p:message>
</div>
<br></br>
<div class="centre">
<a href="AideAdmin.xhtml">Compte n'est pas accessible ?</a><br></br>
</div>
<div class="centre">
<a href="authentification.xhtml">Connexion premier fois ?</a><br></br>
</div>
</h:form>
这是目标网页
!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:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui">
<f:view contentType="text/html">
<h:head>
<link rel="stylesheet" type="text/css" href="css/styles.css" />
<title>Profil: Portail IsetN</title>
<link rel="stylesheet" href="css/style.css" media="screen" />
</h:head>
<f:metadata>
<f:viewParam name="IdUser" value="#{userBean.cin}"
converter="javax.faces.Long" />
<f:viewParam name="IdUser" value="#{documentBean.cin}"
converter="javax.faces.Long" />
</f:metadata>
<h:body>
这是managedBeans代码
@ManagedBean(name="userBean")
@SessionScoped
public class UtilisateurBean implements java.io.Serializable {
private static final long serialVersionUID = 1L;
private Utilisateur newUtilisateur = new Utilisateur();
private List<SelectItem> etudsItem;
private DataModel utilisateurs;
private Utilisateur Utilisateur=new Utilisateur();
private Utilisateur editUtilisateur;
private Long cin;
private String nom;
private String prenom;
private String email;
private String password;
private DaoUtilisateur eDao = new DaoUtilisateur();
public String login(){
try{
Utilisateur= eDao.findUtilisateurByEmail(email, password) ;
if (Utilisateur==null){
FacesMessage msg = new FacesMessage("Mot de passe ou email non valide");
FacesContext.getCurrentInstance().addMessage(null, msg);
return "loginfailed";
}
else{
cin=Utilisateur.getCin();
System.out.println("cin connecté "+cin);
return"loginUtilisateur";
}
}
catch(Exception ex){ return"loginfailed";}
}
这是文档Bean代码
@ManagedBean(name="documentBean")
@SessionScoped
public class DocumentBean implements java.io.Serializable{
private static final long serialVersionUID = 1L;
private List<SelectItem> docItems;
private DataModel documents;
private List<Document> tps;
private List<Document> tds;
private List<Document> annonces;
private Document newDocument= new Document();
private Document editDocument;
private Long cin;
public String create(){
newDocument.setDateajout(new Date());
System.out.println("your cin annonce "+cin);
dDao.ajouter(newDocument,cin);
newDocument= new Document();
documents.setWrappedData(dDao.selectAll());
return null;
}
我想知道我错过了我更新了mojarra,更改了名称空间,更改了bean范围,但仍然无法正常工作。
答案 0 :(得分:1)
我想,这是你所谓的工作流程:
user.cin
字段在这种假设下,你没有技术问题而是逻辑问题:
IdUser
(null
,请参阅1.)与登录操作并行<f:viewParam />
您获取null
- 参数并将其注入documentBean。我猜你必须选择不同的解决方案。希望它有所帮助...