Może to późno, ale tutaj mogę zostawić coś, że serwowane mnie, a może ktoś może pomóc.
Używam również MVC wiosny i hibernacji
W modelu (klasy podmiotu) utworzyć zmienną typu String zrobić konwersję typu bajt String z Base64.
Zrobiłem to dla tabeli krajów, które posiadam z odpowiednią flagą, a tym, czego chciałem było wymienić w tabeli w widoku wszystkich krajów i na bok jego flagi.
modelu (jednostki)
import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;
@Entity
@Table(name = "country")
public class Country implements java.io.Serializable {
private int id;
private String name;
private byte[] flag;
private String base64; //Variable to store the conversion of a data byte type to String
@Transient //Annotation so it does not persist in the database
public String getBase64() {
//Convert the data type byte to String, store it in the variable and return it
return this.base64 = Base64.encode(this.flag);
}
public void setBase64(String base64) {
this.base64 = base64;
}
public Country() {
}
public Country(int id, String name, byte[] flag, String base64) {
this.id = id;
this.name = name;
this.flag = this.flag
this.base64 = this.base64;
}
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", unique = true, nullable = false)
public int getId() {
return this.id;
}
public void setId(int id) {
this.id = id;
}
@Column(name = "name")
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
@Column(name = "flag")
public byte[] getFlag() {
return this.flag;
}
public void setFlag(byte[] flag) {
this.flag = flag;
}
}
repozytorium - wykona jest interfejs - AbstractDao jest klasą Streszczenie importu org.springframework.stereotype.Repository; import application.model.Country; import application.repository.dao.AbstractDao; import application.repository.dao.CountryDao; import org.hibernate.Criteria;
@Repository("countryDao")
public class CountryDaoImpl extends AbstractDao<Integer, Country> implements CountryDao {
@Override
@SuppressWarnings("unchecked")
public List<Country> listCountries() {
Criteria criteria = createEntityCriteria(); //Country.class
criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
List<Country> listCountries = criteria.list();
return listCountries;
}
}
Service - narzędzia jest interfejsem
import application.model.Country;
import application.repository.dao.CountryDao;
import application.service.dao.CountryService;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service("countryService")
public class CountryServiceImpl implements CountryService {
@Autowired
private CountryDao countryDao;
@Override
@Transactional(readOnly = true)
public List<Country> listCountries() {
return countryDao.listCountries();
}
}
Controller
import application.model.Country;
import application.service.dao.CountryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping(value = "/countries")
public class CountryController {
@Autowired
private CountryService countryService;
@RequestMapping(value = "/list", method = RequestMethod.GET)
public String ListCountries(Model model) {
model.addAttribute("listcont", countryService.listCountry());
return "countries/countries"; //view
}
}
View - kraje/countries.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<h3>List Countries</h3>
<table>
<thead>
<tr>
<th>Name</th>
<th>Flag</th>
</tr>
</thead>
<tbody>
<c:forEach items="${listcont}" var="country">
<tr>
<td>${country.name}</td>
<td><img src="data:image/png;base64,${country.base64}" /></
</tr>
</c:forEach>
</tbody>
</table>
</body>
</html>
Próbowałem tego rozwiązania, ale dostaję błąd 404. Czy to z powodu mojej konfiguracji widoku używają kafelków? Wprowadziłem konfiguracje do aktualizacji – bontade
W końcu błąd 404 został spowodowany przez mapowanie serwletów, które wyświetlało żądania dla regex * .htm. Twoje rozwiązanie działa! Dzięki! Dzięki: D – bontade
"Wiosna MVC + Hibernate + Maven" w pełni działający przykład: https://sites.google.com/site/adrienitnotes/java/web-apps---spring-mvc-hibernate/spring-form-image -upload-display-from-database-hibernate-simple-mapping –