我在托管bean中有一个名为chemin的属性,我想将其值设置为String(属性值应存储在数据库中,而不是来自表单),但是我不知道该怎么做。
chemin属性位于上传文件并将其亲戚信息存储在数据库中的方法内部,例如日期,文档标题,描述以及上传文件的路径(文件存储在目录中)。
这是这样做的代码:
托管Bean:
public String upload() throws IOException{
file.write(getFilename(file));
docDAO.createDoc(idDocument, titreDocument, descriptionDocument, sousCategorie, Categorie, chemin, dateMise, lien);
idDocument=null;
titreDocument="";
descriptionDocument="";
lien="";
sousCategorie="";
dateMise="";
Categorie="";
chemin="C:\\data\\" +getFilename(file);
}
DAO类:
public void createDoc(Integer idDocument, String titreDocument,
String descriptionDocument, String sousCategorie
, String Categorie, String chemin, String dateMise, String lien) {
em.getTransaction().begin();
Document f =new Document();
f.setIdDocument(idDocument);
f.setDateMise(dateMise);
f.setDescriptionDocument(descriptionDocument);
f.setLien(lien);
f.setChemin(chemin);
f.setTitreDocument(titreDocument);
f.setCategorie(Categorie);
f.setSousCategorie(sousCategorie);
em.persist(f);
em.getTransaction().commit();
}
xhtml页面:
<h:form>
<h:outputText value="chemin"></h:outputText>
<h:inputHidden value="#{docBean.chemin}"></h:inputHidden><br/>
<!-- <c:set value="mobil" target="#{docBean}" property="chemin" /> -->
<h:outputText value="Date de la mise "></h:outputText>
<h:inputText value="#{docBean.dateMise}"></h:inputText><br/>
<h:outputText value="Lien"></h:outputText>
<h:inputText value="#{docBean.lien}"></h:inputText><br/>
<h:outputText value="Catégorie"></h:outputText>
<h:inputText value="#{docBean.categorie}"></h:inputText><br/>
<h:outputText value="sous catégorie"> </h:outputText>
<h:inputText value="#{docBean.sousCategorie}"></h:inputText><br/>
<h:outputText> télécharger le document</h:outputText>
<h:inputFile value="#{docBean.file}"></h:inputFile><br/>
<h:commandButton value="valider" action="#{docBean.upload}"/>
</h:form>
任何想法都可以帮上忙。
最佳答案
首先,您必须从xhtml页面中删除<h:inputHidden value="#{docBean.chemin}"></h:inputHidden>
,并在调用docDAO.createDoc()之前,在上载方法中为chemin
提供所需的值,以便可以将其保存在数据库中。