Hibernate <;f:setPropertyActionListener/>;:无更新
我对Hibernate <;f:setPropertyActionListener/>;:无更新,hibernate,spring,jsf,primefaces,Hibernate,Spring,Jsf,Primefaces,我对属性有问题。字段不会使用目标中保存的值进行更新。调试时,我发现目标已使用该值初始化,但当我尝试在xhtm页面中提取数据时,它不起作用 代码如下: 下面是支持Bean: import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.Serializable; import java.util.Arr
属性有问题。字段不会使用目标中保存的值进行更新。调试时,我发现目标已使用该值初始化,但当我尝试在xhtm页面中提取数据时,它不起作用
代码如下:
下面是支持Bean:
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import org.primefaces.model.UploadedFile;
import tn.projet.model.Categorie;
import tn.projet.service.CategorieService;
import javax.annotation.PostConstruct;
import javax.faces.context.FacesContext;
import javax.servlet.ServletContext;
public class CategorieBean implements Serializable{
//DI via Spring
private CategorieService categorieService;
private List<Categorie> categories;
private String nom;
private String desc;
private Categorie selectedCategorie;
private String image;
private UploadedFile fichier;
private UploadedFile fichiermodif;
@PostConstruct
public void init()
{
this.categories = new ArrayList<Categorie>();
categories=categorieService.listerCategorie();
}
/***********GETTERS/SETTERS**********/
public UploadedFile getFichiermodif() {
return fichiermodif;
}
public void setFichiermodif(UploadedFile fichiermodif) {
this.fichiermodif = fichiermodif;
}
public UploadedFile getFichier() {
return fichier;
}
public void setFichier(UploadedFile fichier) {
this.fichier = fichier;
}
public CategorieBean() {
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
public String getNom() {
return nom;
}
public void setNom(String nom) {
this.nom = nom;
}
public CategorieService getCategorieService() {
return categorieService;
}
public void setCategorieService(CategorieService categorieService) {
this.categorieService = categorieService;
}
//recupérer la liste des catégories
public List<Categorie> getCategories()
{
return categories;
}
public Categorie getSelectedCategorie() {
return this.selectedCategorie;
}
public void setSelectedCategorie(Categorie select) {
this.selectedCategorie = select;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
/**************CRUD***********************/
//recupération du fichier image uploadé
public String creerFichier(UploadedFile fich) throws Exception{
ServletContext servletContext = (ServletContext) FacesContext.getCurrentInstance().getExternalContext().getContext();
String retour =fich.getFileName();
String aux_f = servletContext.getRealPath("/")+retour;
File result = new File( aux_f);
try {
FileOutputStream fileOutputStream = new FileOutputStream(result);
byte[] buffer = new byte[6124];
int bulk;
InputStream inputStream = fich.getInputstream();
while (true) {
bulk = inputStream.read(buffer);
if (bulk < 0) {
break;
}
fileOutputStream.write(buffer, 0, bulk);
fileOutputStream.flush();
}
fileOutputStream.close();
inputStream.close();
} catch (IOException e) {e.printStackTrace();}
return retour;
}
public void modifier()
{
if(fichiermodif!=null)
{
try {
String imagemodif= creerFichier(fichiermodif);
selectedCategorie.setImage(imagemodif);
} catch (Exception e) {e.printStackTrace();}
}
categorieService.modifierCategorie(selectedCategorie);
}
//add a new Categorie data into database
public void ajouter(){
if(fichiermodif!=null)
{
try {
image= creerFichier(fichier);
} catch (Exception e) {e.printStackTrace();}
}
Categorie cat = new Categorie();
cat.setNom(getNom());
cat.setDesc(getDesc());
cat.setImage(image);
categorieService.ajouterCategorie(cat);
}
/******************actionListener****************/
public void edit(){
System.out.println("selectedCategorie.getNom()");
}
}
导入java.io.File;
导入java.io.FileOutputStream;
导入java.io.IOException;
导入java.io.InputStream;
导入java.io.Serializable;
导入java.util.ArrayList;
导入java.util.List;
导入org.primefaces.model.UploadedFile;
导入tn.projet.model.Categorie;
导入tn.projet.service.CategorieService;
导入javax.annotation.PostConstruct;
导入javax.faces.context.FacesContext;
导入javax.servlet.ServletContext;
公共类CategorieBean实现可序列化{
//通过弹簧
私人分类服务分类服务;
私人名单类别;
私有字符串名称;
私有字符串描述;
私有分类选择分类;
私有字符串图像;
私有上传文件fichier;
私有上传文件fichiermodif;
@施工后
公共void init()
{
this.categories=新的ArrayList();
categories=categorieService.listerCategorie();
}
/***********能手/二传手**********/
公共上载文件getFichiermodif(){
返回菲希尔莫迪夫;
}
public void setFichiermodif(上传文件fichiermodif){
this.fichiermodif=fichiermodif;
}
公共上载文件getFichier(){
返回菲舍尔;
}
public void setFichier(上传文件fichier){
this.fichier=fichier;
}
公共分类{
}
公共字符串getDesc(){
返回描述;
}
公共void setDesc(字符串desc){
this.desc=desc;
}
公共字符串getNom(){
返回名称;
}
公共无效集合名(字符串名){
this.nom=nom;
}
公共分类服务getCategorieService(){
返回分类服务;
}
public void setCategorieService(CategorieService CategorieService){
this.categorieService=categorieService;
}
//猫之列重现
公共列表getCategories()
{
退货类别;
}
公共分类getSelectedCategorie(){
返回此。SelectedCategory;
}
公共无效集合选定类别(类别选择){
this.selectedCategorie=select;
}
公共字符串getImage(){
返回图像;
}
公共void setImage(字符串图像){
这个图像=图像;
}
/**************积垢***********************/
//菲希尔图像上传重现
公共字符串CreerFicher(UploadedFile fich)引发异常{
ServletContext ServletContext=(ServletContext)FacesContext.getCurrentInstance().getExternalContext().getContext();
字符串retour=fich.getFileName();
字符串aux\u f=servletContext.getRealPath(“/”)+retour;
文件结果=新文件(辅助文件);
试一试{
FileOutputStream FileOutputStream=新的FileOutputStream(结果);
字节[]缓冲区=新字节[6124];
整块;
InputStream InputStream=fich.getInputstream();
while(true){
bulk=inputStream.read(缓冲区);
如果(体积<0){
打破
}
写入(缓冲区,0,大容量);
fileOutputStream.flush();
}
fileOutputStream.close();
inputStream.close();
}catch(IOE异常){e.printStackTrace();}
回归回归;
}
公共无效修饰符()
{
if(fichiermodif!=null)
{
试一试{
字符串imagemodif=creerFichier(fichiermodif);
选择分类设置图像(imagemodif);
}catch(异常e){e.printStackTrace();}
}
分类服务。修改分类(已选择分类);
}
//将新的分类数据添加到数据库中
公共空间{
if(fichiermodif!=null)
{
试一试{
图像=滤线器(fichier);
}catch(异常e){e.printStackTrace();}
}
Categorie cat=新的Categorie();
cat.setNom(getNom());
cat.setDesc(getDesc());
cat.setImage(图像);
分类服务。外部分类(cat);
}
/******************actionListener****************/
公共作废编辑(){
System.out.println(“selectedCategorie.getNom()”;
}
}
您可能会遇到2.2.1中Primefaces dataTable组件的错误,其中从dataTable中触发的回发不会导致组件更新
我在a中发布了一个解决方案。您使用什么版本的Primefaces?我使用的是最新版本3.0
</h:head>
<h:body>
<h:form id="form" enctype="multipart/form-data">
<p:commandLink value="Ajouter" oncomplete="newcatDialog.show()" />
<p:dataTable value="#{categorieBean.categories}" var="categ" id="table" >
<f:facet name="header">
<h:outputText value="Catégories" />
</f:facet>
<p:column>
<h:outputText id="id" value="#{categ.id}"/>
</p:column>
<p:column>
<h:outputText id="nom" value="#{categ.nom}"/>
</p:column>
<p:column>
<p:commandLink update="display" value="Modifier" onclick="catDialog.show()" >
<f:setPropertyActionListener value="#{categ}"
target="#{categorieBean.selectedCategorie}" />
</p:commandLink>
</p:column>
</p:dataTable>
<p:dialog id="creation" header="Catégorie" widgetVar="newcatDialog" resizable="false"
autoSized="true" modal="true">
<h:panelGrid id="ceationDisplay" columns="2" cellpadding="4">
<h:column><h:outputText value="Nom: " /></h:column>
<h:column>
<h:inputText value="#{categorieBean.nom}" />
</h:column>
<h:column>
<h:outputText value="Description: " />
</h:column>
<h:column>
<h:inputText value="#{categorieBean.desc}" />
</h:column>
<h:column>
<h:outputText value="Photo: " />
</h:column>
<h:column>
<p:fileUpload value="#{categorieBean.fichier}" mode="simple" auto="true"
allowTypes="/(\.|\/)(gif|jpe?g|png)$/" />
</h:column>
<h:column>
<p:commandButton value="Enregistrer"
actionListener="#{categorieBean.ajouter}"
oncomplete="newcatDialog.hide()"
update="table"
ajax="false"
>
</p:commandButton>
</h:column>
<h:column>
<p:commandButton value="Annuler" oncomplete="newcatDialog.hide()" ></p:commandButton>
</h:column>
</h:panelGrid>
</p:dialog>
</h:form>
<!-- ************************ -->
<p:dialog id="modification" header="Catégorie" widgetVar="catDialog" resizable="false"
autoSized="true" modal="true" appendToBody="true">
<h:form>
<h:panelGrid id="display" columns="2" cellpadding="4">
<h:column><h:outputText value="Nom: " /></h:column>
<h:column>
<h:inputText value="#{categorieBean.selectedCategorie.nom}" />
</h:column>
<h:column>
<h:outputText value="Description: " />
</h:column>
<h:column>
<h:inputText value="#{categorieBean.selectedCategorie.desc}" />
</h:column>
<h:column>
<h:outputText value="Photo: " />
</h:column>
<h:column>
<p:fileUpload value="#{categorieBean.fichiermodif}" mode="simple" auto="true"
allowTypes="/(\.|\/)(gif|jpe?g|png)$/" />
</h:column>
<h:column>
<p:commandButton value="Enregistrer"
actionListener="#{categorieBean.modifier}"
oncomplete="catDialog.hide()"
update="table"
ajax="false"
>
</p:commandButton>
</h:column>
<h:column>
<p:commandButton value="Annuler" oncomplete="catDialog.hide()" ></p:commandButton>
</h:column>
</h:panelGrid>
</h:form>
</p:dialog>
</h:body>
</f:view>
</html>
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import org.primefaces.model.UploadedFile;
import tn.projet.model.Categorie;
import tn.projet.service.CategorieService;
import javax.annotation.PostConstruct;
import javax.faces.context.FacesContext;
import javax.servlet.ServletContext;
public class CategorieBean implements Serializable{
//DI via Spring
private CategorieService categorieService;
private List<Categorie> categories;
private String nom;
private String desc;
private Categorie selectedCategorie;
private String image;
private UploadedFile fichier;
private UploadedFile fichiermodif;
@PostConstruct
public void init()
{
this.categories = new ArrayList<Categorie>();
categories=categorieService.listerCategorie();
}
/***********GETTERS/SETTERS**********/
public UploadedFile getFichiermodif() {
return fichiermodif;
}
public void setFichiermodif(UploadedFile fichiermodif) {
this.fichiermodif = fichiermodif;
}
public UploadedFile getFichier() {
return fichier;
}
public void setFichier(UploadedFile fichier) {
this.fichier = fichier;
}
public CategorieBean() {
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
public String getNom() {
return nom;
}
public void setNom(String nom) {
this.nom = nom;
}
public CategorieService getCategorieService() {
return categorieService;
}
public void setCategorieService(CategorieService categorieService) {
this.categorieService = categorieService;
}
//recupérer la liste des catégories
public List<Categorie> getCategories()
{
return categories;
}
public Categorie getSelectedCategorie() {
return this.selectedCategorie;
}
public void setSelectedCategorie(Categorie select) {
this.selectedCategorie = select;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
/**************CRUD***********************/
//recupération du fichier image uploadé
public String creerFichier(UploadedFile fich) throws Exception{
ServletContext servletContext = (ServletContext) FacesContext.getCurrentInstance().getExternalContext().getContext();
String retour =fich.getFileName();
String aux_f = servletContext.getRealPath("/")+retour;
File result = new File( aux_f);
try {
FileOutputStream fileOutputStream = new FileOutputStream(result);
byte[] buffer = new byte[6124];
int bulk;
InputStream inputStream = fich.getInputstream();
while (true) {
bulk = inputStream.read(buffer);
if (bulk < 0) {
break;
}
fileOutputStream.write(buffer, 0, bulk);
fileOutputStream.flush();
}
fileOutputStream.close();
inputStream.close();
} catch (IOException e) {e.printStackTrace();}
return retour;
}
public void modifier()
{
if(fichiermodif!=null)
{
try {
String imagemodif= creerFichier(fichiermodif);
selectedCategorie.setImage(imagemodif);
} catch (Exception e) {e.printStackTrace();}
}
categorieService.modifierCategorie(selectedCategorie);
}
//add a new Categorie data into database
public void ajouter(){
if(fichiermodif!=null)
{
try {
image= creerFichier(fichier);
} catch (Exception e) {e.printStackTrace();}
}
Categorie cat = new Categorie();
cat.setNom(getNom());
cat.setDesc(getDesc());
cat.setImage(image);
categorieService.ajouterCategorie(cat);
}
/******************actionListener****************/
public void edit(){
System.out.println("selectedCategorie.getNom()");
}
}