Commit f704bb71 by Tuomas Riihimäki

Korjattu kuvanlähetys. Listty primefaces.jar

1 parent f26d08e4
...@@ -156,17 +156,15 @@ public class UserBean implements UserBeanLocal { ...@@ -156,17 +156,15 @@ public class UserBean implements UserBeanLocal {
@Override @Override
@RolesAllowed(SpecialPermission.S_USER) @RolesAllowed(SpecialPermission.S_USER)
public UserImage uploadImage(Integer userid, String contentType, byte[] image, String filename, String description) throws PermissionDeniedException { public UserImage uploadImage(User user, String contentType, byte[] image, String filename, String description) throws PermissionDeniedException {
User user = permbean.getCurrentUser();
logger.debug("uploading image to userid {}", userid); user = userFacade.merge(user);
if (userid == null || userid.equals(0)) { logger.debug("uploading image to userid {}", user);
userid = user.getId();
}
if (!user.getId().equals(userid)) { if (!user.equals(permbean.getCurrentUser())) {
permbean.fatalPermission(UserPermission.MODIFY, "usert tried to save picture to userid " + userid + " without sufficient permissions!"); permbean.fatalPermission(UserPermission.MODIFY, "usert tried to save picture to userid " + user + " without sufficient permissions!");
user = userFacade.find(userid);
} }
UserImage userimage = new UserImage(user); UserImage userimage = new UserImage(user);
userimage.setMimeType(contentType); userimage.setMimeType(contentType);
userimage.setImageData(image); userimage.setImageData(image);
......
...@@ -29,7 +29,7 @@ public interface UserBeanLocal { ...@@ -29,7 +29,7 @@ public interface UserBeanLocal {
// void fatalNotLoggedIn(); // void fatalNotLoggedIn();
UserImage uploadImage(Integer userid, String contentType, byte[] image, String filename, String description) throws PermissionDeniedException; UserImage uploadImage(User user, String contentType, byte[] image, String filename, String description) throws PermissionDeniedException;
UserImage findUserImage(int id) throws PermissionDeniedException; UserImage findUserImage(int id) throws PermissionDeniedException;
......
...@@ -92,7 +92,7 @@ public class User extends GenericEntity { ...@@ -92,7 +92,7 @@ public class User extends GenericEntity {
@Column(name = "phone") @Column(name = "phone")
private String phone = ""; private String phone = "";
@OneToOne @OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "current_image_id", referencedColumnName = "id") @JoinColumn(name = "current_image_id", referencedColumnName = "id")
private UserImage currentImage; private UserImage currentImage;
......
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee"
<display-name>LanBortalWeb</display-name> xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
<session-config> xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
<session-timeout>30</session-timeout> id="WebApp_ID" version="2.5">
</session-config> <display-name>LanBortalWeb</display-name>
<context-param> <session-config>
<param-name>javax.faces.FACELETS_SKIP_COMMENTS</param-name> <session-timeout>30</session-timeout>
<param-value>true</param-value> </session-config>
</context-param> <context-param>
<servlet-mapping> <param-name>javax.faces.FACELETS_SKIP_COMMENTS</param-name>
<servlet-name>PlaceMap</servlet-name> <param-value>true</param-value>
<url-pattern>/PlaceMap</url-pattern> </context-param>
</servlet-mapping> <servlet-mapping>
<welcome-file-list> <servlet-name>PlaceMap</servlet-name>
<welcome-file>index.html</welcome-file> <url-pattern>/PlaceMap</url-pattern>
<welcome-file>index.jsf</welcome-file> </servlet-mapping>
<welcome-file>index.jsp</welcome-file> <welcome-file-list>
</welcome-file-list> <welcome-file>index.html</welcome-file>
<servlet> <welcome-file>index.jsf</welcome-file>
<servlet-name>Faces Servlet</servlet-name> <welcome-file>index.jsp</welcome-file>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class> </welcome-file-list>
<load-on-startup>1</load-on-startup> <servlet>
</servlet> <servlet-name>Faces Servlet</servlet-name>
<servlet> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<servlet-name>UploadServlet</servlet-name> <load-on-startup>1</load-on-startup>
<servlet-class>fi.insomnia.bortal.servlet.UploadServlet</servlet-class> </servlet>
</servlet> <servlet>
<servlet-mapping> <servlet-name>UploadServlet</servlet-name>
<servlet-name>UploadServlet</servlet-name> <servlet-class>fi.insomnia.bortal.servlet.UploadServlet</servlet-class>
<url-pattern>/UploadServlet</url-pattern> </servlet>
</servlet-mapping> <servlet-mapping>
<servlet> <servlet-name>UploadServlet</servlet-name>
<servlet-name>UserImageServlet</servlet-name> <url-pattern>/UploadServlet</url-pattern>
<servlet-class>fi.insomnia.bortal.servlet.UserImageServlet</servlet-class> </servlet-mapping>
</servlet> <servlet>
<servlet-mapping> <servlet-name>UserImageServlet</servlet-name>
<servlet-name>UserImageServlet</servlet-name> <servlet-class>fi.insomnia.bortal.servlet.UserImageServlet</servlet-class>
<url-pattern>/Userimage</url-pattern> </servlet>
</servlet-mapping> <servlet-mapping>
<servlet> <servlet-name>UserImageServlet</servlet-name>
<servlet-name>PlaceMap</servlet-name> <url-pattern>/Userimage</url-pattern>
<servlet-class>fi.insomnia.bortal.servlet.PlaceMap</servlet-class> </servlet-mapping>
</servlet> <servlet>
<servlet-mapping> <servlet-name>PlaceMap</servlet-name>
<servlet-name>Faces Servlet</servlet-name> <servlet-class>fi.insomnia.bortal.servlet.PlaceMap</servlet-class>
<url-pattern>*.jsf</url-pattern> </servlet>
<url-pattern>/faces/*</url-pattern> <servlet-mapping>
</servlet-mapping> <servlet-name>Faces Servlet</servlet-name>
<filter> <url-pattern>*.jsf</url-pattern>
<display-name>HostnameFilter</display-name> <url-pattern>/faces/*</url-pattern>
<filter-name>HostnameFilter</filter-name> </servlet-mapping>
<filter-class>fi.insomnia.bortal.HostnameFilter</filter-class>
</filter> <filter>
<filter-mapping> <display-name>PrimefacesFileupload</display-name>
<filter-name>HostnameFilter</filter-name> <filter-name>PrimeFacesFileupload</filter-name>
<servlet-name>*</servlet-name> <filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class>
</filter-mapping> </filter>
<login-config> <filter-mapping>
<auth-method>FORM</auth-method> <filter-name>PrimeFacesFileupload</filter-name>
<realm-name>omniarealm</realm-name> <servlet-name>Faces Servlet</servlet-name>
<form-login-config> </filter-mapping>
<form-login-page>/auth/login.jsf</form-login-page>
<form-error-page>/auth/loginError.jsf</form-error-page> <filter>
</form-login-config> <display-name>HostnameFilter</display-name>
</login-config> <filter-name>HostnameFilter</filter-name>
<security-constraint> <filter-class>fi.insomnia.bortal.HostnameFilter</filter-class>
<display-name>Forbidden resource</display-name> </filter>
<web-resource-collection> <filter-mapping>
<web-resource-name>Forbidden</web-resource-name> <filter-name>HostnameFilter</filter-name>
<url-pattern>*.xhtml</url-pattern> <servlet-name>*</servlet-name>
<url-pattern>/layout/*</url-pattern> </filter-mapping>
<url-pattern>/resources/tools/*</url-pattern> <login-config>
</web-resource-collection> <auth-method>FORM</auth-method>
<auth-constraint> <realm-name>omniarealm</realm-name>
<description>Thou shall not read the sources or use utils directly</description> <form-login-config>
</auth-constraint> <form-login-page>/auth/login.jsf</form-login-page>
</security-constraint> <form-error-page>/auth/loginError.jsf</form-error-page>
<servlet> </form-login-config>
<description></description> </login-config>
<display-name>PrintBill</display-name> <security-constraint>
<servlet-name>PrintBill</servlet-name> <display-name>Forbidden resource</display-name>
<servlet-class>fi.insomnia.bortal.servlet.PrintBill</servlet-class> <web-resource-collection>
</servlet> <web-resource-name>Forbidden</web-resource-name>
<servlet-mapping> <url-pattern>*.xhtml</url-pattern>
<servlet-name>PrintBill</servlet-name> <url-pattern>/layout/*</url-pattern>
<url-pattern>/PrintBill</url-pattern> <url-pattern>/resources/tools/*</url-pattern>
</servlet-mapping> </web-resource-collection>
<!-- <error-page> <auth-constraint>
<error-code>401</error-code> <description>Thou shall not read the sources or use utils directly</description>
<location>/permissionDeniedRedirect.jsp</location> </auth-constraint>
</error-page> </security-constraint>
<error-page> <servlet>
<error-code>403</error-code> <description></description>
<location>/permissionDeniedRedirect.jsp</location> <display-name>PrintBill</display-name>
</error-page> <servlet-name>PrintBill</servlet-name>
<error-page> <servlet-class>fi.insomnia.bortal.servlet.PrintBill</servlet-class>
<exception-type>fi.insomnia.bortal.exceptions.PermissionDeniedException</exception-type> </servlet>
<location>/permissionDeniedRedirect.jsp</location> <servlet-mapping>
</error-page> <servlet-name>PrintBill</servlet-name>
<error-page> <url-pattern>/PrintBill</url-pattern>
<exception-type>javax.servlet.ServletException</exception-type> </servlet-mapping>
<location>/permissionDeniedRedirect.jsp</location> <!-- <error-page>
</error-page> <error-code>401</error-code>
--> <location>/permissionDeniedRedirect.jsp</location>
<persistence-unit-ref> </error-page>
<persistence-unit-ref-name>BortalEMF</persistence-unit-ref-name> <error-page>
</persistence-unit-ref> <error-code>403</error-code>
<servlet> <location>/permissionDeniedRedirect.jsp</location>
<description></description> </error-page>
<display-name>PlaceGroupPdf</display-name> <error-page>
<servlet-name>PlaceGroupPdf</servlet-name> <exception-type>fi.insomnia.bortal.exceptions.PermissionDeniedException</exception-type>
<servlet-class>fi.insomnia.bortal.servlet.PlaceGroupPdf</servlet-class> <location>/permissionDeniedRedirect.jsp</location>
</servlet> </error-page>
<servlet-mapping> <error-page>
<servlet-name>PlaceGroupPdf</servlet-name> <exception-type>javax.servlet.ServletException</exception-type>
<url-pattern>/PlaceGroupPdf</url-pattern> <location>/permissionDeniedRedirect.jsp</location>
</servlet-mapping> </error-page>
-->
<persistence-unit-ref>
<persistence-unit-ref-name>BortalEMF</persistence-unit-ref-name>
</persistence-unit-ref>
<servlet>
<description></description>
<display-name>PlaceGroupPdf</display-name>
<servlet-name>PlaceGroupPdf</servlet-name>
<servlet-class>fi.insomnia.bortal.servlet.PlaceGroupPdf</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>PlaceGroupPdf</servlet-name>
<url-pattern>/PlaceGroupPdf</url-pattern>
</servlet-mapping>
</web-app> </web-app>
\ No newline at end of file
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:c="http://java.sun.com/jsp/jstl/core"
> >
<f:view locale="#{sessionHandler.locale}"> <f:view contentType="text/html" locale="#{sessionHandler.locale}">
<h:head> <h:head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title><h:outputText value="#{layoutView.getHeader()}" /></title> <title><h:outputText value="#{layoutView.getHeader()}" /></title>
......
<?xml version='1.0' encoding='UTF-8' ?>
<!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:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core"
xmlns:composite="http://java.sun.com/jsf/composite" xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:c="http://java.sun.com/jsp/jstl/core"
>
<composite:interface>
</composite:interface>
<composite:implementation>
<h:outputScript target="head" library="script" name="jquery.min.js" />
<h:outputScript target="head" library="jpegcam" name="webcam.js" />
<h:outputScript target="head">
webcam.set_api_url( '#{request.contextPath}/UploadServlet?type=userimage&amp;id=#{userView.selectedUser.id}' );
webcam.set_hook('onComplete', 'my_completion_handler');
webcam.set_swf_url('#{request.contextPath}/resources/jpegcam/Webcam.swf');
webcam.set_shutter_sound(true,'#{request.contextPath}/resources/jpegcam/shutter.mp3');
function my_completion_handler(msg) {
// alert("Completition handler executed" + msg);
window.location.href=window.location.href;
}
</h:outputScript>
<button onclick="$('#webcamcontainer').prepend(webcam.get_html(320, 240));$('#webcamcontainer').show();$(this).hide();">#{i18n['userimage.webcam']}</button>
<div id="webcamcontainer" style="display: none;"></div>
<p>Voit lisätä kuvan kävijälippuasi varten. Näin nopeutat asiointiasi tapahtumaan tullessasi.</p>
<p>
Kuvasta on pystyttävä tunnistamaan ongelmitta kortin omistaja. Tästä johtuen kuvan tulee olla selkeä, eikä kuvassa saa
olla useita henkilöitä. Ohjeita hyvän tunnistekuvan ottamiseksi löytyy <a
href="http://www.poliisi.fi/poliisi/home.nsf/files/Passikuvaohje_26-02-2008_FI/$file/Passikuvaohje_26-02-2008_FI.pdf"
>poliisin passikuvaohjeesta.</a>
</p>
<form
onsubmit="window.open('', 'imagesubmitpopup', 'height=240,width=320'); this.target='imagesubmitpopup'; return true; "
action="#{request.contextPath}/UploadServlet?type=userimage" enctype="multipart/form-data" method="post"
>
<input type="hidden" name="id" value="#{userView.user.id}" />
<!-- <h:outputLabel value="#{i18n['imagefile.file']}" /> -->
<input type="file" name="file" />
<!-- <h:outputLabel value="#{i18n['imagefile.description']}"/><input type="text" name="description" /> -->
<input type="submit" name="submit" value="#{i18n['user.imagesubmit']}" />
</form>
<h2>#{i18n['user.thisIsCurrentImage']}</h2>
<h:outputText rendered="#{empty userView.user.currentImage}" value="#{i18n['user.noCurrentImage']}" />
<h:panelGroup rendered="#{!empty userView.user.currentImage}">
<img width="300" src="#{request.contextPath}/Userimage?imageid=#{userView.user.currentImage.id}" alt="image" />
</h:panelGroup>
</composite:implementation>
</html>
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" <html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core"
xmlns:users="http://java.sun.com/jsf/composite/cditools/user" xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:p="http://primefaces.prime.com.tr/ui"
> >
<h:body> <h:body>
<ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml"> <ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml">
...@@ -13,11 +13,60 @@ ...@@ -13,11 +13,60 @@
<f:event type="preRenderView" listener="#{userView.initView}" /> <f:event type="preRenderView" listener="#{userView.initView}" />
</f:metadata> </f:metadata>
<ui:define name="title"> <ui:define name="title">
<h1>#{i18n['sendPicture.header']}</h1> <h1>#{i18n['sendPicture.header']}</h1>
</ui:define> </ui:define>
<ui:define name="content"> <ui:define name="content">
<h:outputScript target="head" library="script" name="jquery.min.js" />
<h:outputScript target="head" library="jpegcam" name="webcam.js" />
<h:outputScript target="head">
webcam.set_api_url( '#{request.contextPath}/UploadServlet?type=userimage&amp;id=#{userView.selectedUser.id}' );
webcam.set_hook('onComplete', 'my_completion_handler');
<users:sendImage /> webcam.set_swf_url('#{request.contextPath}/resources/jpegcam/Webcam.swf');
webcam.set_shutter_sound(true,'#{request.contextPath}/resources/jpegcam/shutter.mp3');
function my_completion_handler(msg) {
// alert("Completition handler executed" + msg);
window.location.href="#{request.contextPath}/user/sendPicture.jsf?userid=#{userView.user.id}";
}
</h:outputScript>
<button
onclick="$('#webcamcontainer').prepend(webcam.get_html(320, 240));$('#webcamcontainer').show();$(this).hide();"
>#{i18n['userimage.webcam']}</button>
<div id="webcamcontainer" style="display: none;"></div>
<p>Voit lisätä kuvan kävijälippuasi varten. Näin nopeutat asiointiasi tapahtumaan tullessasi.</p>
<p>
Kuvasta on pystyttävä tunnistamaan ongelmitta kortin omistaja. Tästä johtuen kuvan tulee olla selkeä, eikä kuvassa
saa olla useita henkilöitä. Ohjeita hyvän tunnistekuvan ottamiseksi löytyy <a
href="http://www.poliisi.fi/poliisi/home.nsf/files/Passikuvaohje_26-02-2008_FI/$file/Passikuvaohje_26-02-2008_FI.pdf"
>poliisin passikuvaohjeesta.</a>
</p>
<h:form enctype="multipart/form-data">
<p:fileUpload value="#{userView.image}" mode="simple" />
<h:commandButton action="#{userView.sendImage}" value="#{i18n['user.imagesubmit']}" />
</h:form>
<h2>#{i18n['user.thisIsCurrentImage']}</h2>
<h:outputText rendered="#{empty userView.user.currentImage}" value="#{i18n['user.noCurrentImage']}" />
<h:panelGroup rendered="#{!empty userView.user.currentImage}">
<img width="300" src="#{request.contextPath}/Userimage?imageid=#{userView.user.currentImage.id}" alt="image" />
</h:panelGroup>
</ui:define> </ui:define>
</ui:composition> </ui:composition>
......
...@@ -274,6 +274,7 @@ user.accountEventHeader=Tilitapahtumat ...@@ -274,6 +274,7 @@ user.accountEventHeader=Tilitapahtumat
user.address=Osoite user.address=Osoite
user.bank=Pankki user.bank=Pankki
user.bankaccount=Pankkitili user.bankaccount=Pankkitili
user.imageUploaded=Kuva lhetetty.
user.create=Luo k\u00e4ytt\u00e4j\u00e4 user.create=Luo k\u00e4ytt\u00e4j\u00e4
user.createdmessage=K\u00e4ytt\u00e4j\u00e4tunnus on luotu onnistuneesti. Voit nyt kirjautua sis\u00e4\u00e4n. user.createdmessage=K\u00e4ytt\u00e4j\u00e4tunnus on luotu onnistuneesti. Voit nyt kirjautua sis\u00e4\u00e4n.
......
...@@ -110,7 +110,7 @@ public class UploadServlet extends HttpServlet { ...@@ -110,7 +110,7 @@ public class UploadServlet extends HttpServlet {
String type = request.getParameter("type"); String type = request.getParameter("type");
if (type.equals("userimage")) { if (type.equals("userimage")) {
logger.debug("Uploading userimage for user {}"); logger.debug("Uploading userimage for user {}");
UserImage userimage = userbean.uploadImage(destId, contenttype, imagedata, filename, description); UserImage userimage = userbean.uploadImage(userbean.findById(destId), contenttype, imagedata, filename, description);
utilbean.convertImage(userimage.getUser()); utilbean.convertImage(userimage.getUser());
} else if (type.equals("mapimage")) { } else if (type.equals("mapimage")) {
eventmapbean.sendImage(destId, imagedata); eventmapbean.sendImage(destId, imagedata);
......
...@@ -7,6 +7,7 @@ import javax.enterprise.inject.Produces; ...@@ -7,6 +7,7 @@ import javax.enterprise.inject.Produces;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Named; import javax.inject.Named;
import org.primefaces.model.UploadedFile;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -14,6 +15,7 @@ import fi.insomnia.bortal.beans.PermissionDeniedException; ...@@ -14,6 +15,7 @@ import fi.insomnia.bortal.beans.PermissionDeniedException;
import fi.insomnia.bortal.beans.UserBeanLocal; import fi.insomnia.bortal.beans.UserBeanLocal;
import fi.insomnia.bortal.enums.apps.UserPermission; import fi.insomnia.bortal.enums.apps.UserPermission;
import fi.insomnia.bortal.model.User; import fi.insomnia.bortal.model.User;
import fi.insomnia.bortal.model.UserImage;
import fi.insomnia.bortal.web.annotations.LoggedIn; import fi.insomnia.bortal.web.annotations.LoggedIn;
import fi.insomnia.bortal.web.annotations.SelectedUser; import fi.insomnia.bortal.web.annotations.SelectedUser;
import fi.insomnia.bortal.web.cdiview.GenericCDIView; import fi.insomnia.bortal.web.cdiview.GenericCDIView;
...@@ -30,6 +32,7 @@ public class UserView extends GenericCDIView { ...@@ -30,6 +32,7 @@ public class UserView extends GenericCDIView {
@EJB @EJB
private transient UserBeanLocal userbean; private transient UserBeanLocal userbean;
private Integer userid; private Integer userid;
private UploadedFile image;
private User user; private User user;
@Inject @Inject
...@@ -66,6 +69,19 @@ public class UserView extends GenericCDIView { ...@@ -66,6 +69,19 @@ public class UserView extends GenericCDIView {
return user; return user;
} }
public String sendImage() {
try {
UserImage userimage = userbean.uploadImage(user, getImage().getContentType(), getImage().getContents(), getImage().getFileName(), "");
user = userimage.getUser();
} catch (PermissionDeniedException e) {
super.addFaceMessage("user.imageUploadFailed");
}
super.addFaceMessage("user.imageUploaded");
return null;
}
public void initCreateView() { public void initCreateView() {
if (super.requirePermissions(UserPermission.CREATE_NEW)) { if (super.requirePermissions(UserPermission.CREATE_NEW)) {
user = new User(); user = new User();
...@@ -147,4 +163,12 @@ public class UserView extends GenericCDIView { ...@@ -147,4 +163,12 @@ public class UserView extends GenericCDIView {
public String getPasswordcheck() { public String getPasswordcheck() {
return passwordcheck; return passwordcheck;
} }
public UploadedFile getImage() {
return image;
}
public void setImage(UploadedFile image) {
this.image = image;
}
} }
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!