У меня есть несколько вопросов, я пытаюсь найти учебник о том, как сохранить изображение в столбец mediumblob в моей базе данных с помощью JSF, PrimeFaces (или, если есть другой способ сделать это) и Managed Bean, я знаю, что делать сделать это без JSF и Managed Bean, но, поскольку я новичок в этом, я остановился на нескольких вещах... Я действительно понятия не имею, как получить изображение с моей страницы JSF, преобразовать в массив байтов и сохранить его. Пожалуйста, кто-нибудь, дайте свет.
Вот что я сделал, извините, но я действительно новичок, поэтому, пожалуйста, помогите мне.
JSF-страница:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui">
<h:body>
<h:form>
<!-- <p:growl id="growl" showDetail="true" sticky="true" /> -->
<p:messages id="messages" showDetail="true" autoUpdate="true" closable="true" />
<h:panelGrid columns="3">
<h:outputText value="ID : "/>
<h:inputText id="txtId" name="txtId" value="${produtoMB.prodAtual.id}" readonly="true"/>
<p:message id="a" for="txtId"/>
<h:outputText value="Foto:"/>
<p:fileUpload id="txtFoto" name="txtFoto" value="${produtoMB.prodAtual.foto}" />
<p:message id="i" for="txtFoto" showSummary="true" showDetail="false"/>
<h:panelGroup>
<h:commandButton name="cmd" value="Insert" action="${produtoMB.insert()}"/>
</h:panelGroup>
</h:panelGrid>
</h:form>
</h:body>
</html>
Моя сущность
@Entity
public class Produto implements Serializable {
private static final long serialVersionUID = -8914597399554711634L;
private long id;
private Byte[] foto;
@Id
@GeneratedValue
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
@Lob
@Column(columnDefinition="mediumblob")
public Byte[] getFoto() {
return foto;
}
public void setFoto(Byte[] foto) {
this.foto = foto;
}
}
Управляемый компонент
@ManagedBean
@SessionScoped
public class ProdutoMB implements Serializable {
private static final long serialVersionUID = -3304202810037758438L;
private Produto prodAtual;
public ProdutoMB() {
prodAtual = new Produto();
prodDAO = new ProdutoDAOImpl();
}
public String insert() {
try {
prodDAO.insert( prodAtual );
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "";
}
}
Благодарю вас!
InputStream
илиbyte[]
, остальное больше не является проблемой JSF. - person BalusC   schedule 23.06.2013