Я обновил свое приложение с primefaces 7.0 до 8.0 и liferay-ce-portal-7.1.2-ga3 до liferay-ce-portal-7.2.0-ga1 (сервер Tomcat) и jsf версии 2.2.18.
После этого обновления я заметил, что компонент p:fileUpload
больше не работает нормально. До обновления я использовал атрибут fileUploadListener
в компоненте p:fileUpload
. Но этот атрибут недоступен в PrimeFaces версии 8.0, поэтому я изменил атрибут на listener
код ниже:
x html part
<p:fileUpload label="Upload" auto="true"
styleClass="button" listener="#{loginBean.handleProfileImageUpload}"
skinSimple="true" update="@all" mode="advanced"
allowTypes="/(\.|\/)(gif|jpe?g|png)$/" fileLimit="1" />
часть боба
public void handleProfileImageUpload(FileUploadEvent event) {
try {
file = event.getFile();
loggedInUser = UserLocalServiceUtil.updatePortrait(loggedInUser.getUserId(),
FileUtil.getBytes(file.getInputStream()));
long portraitId = loggedInUser.getPortraitId();
String tokenId = WebServerServletTokenUtil.getToken(loggedInUser.getPortraitId());
String img_id_token = HttpUtil.encodeURL(DigesterUtil.digest(loggedInUser.getUuid()));
profilePath = "image/user_" + ((loggedInUser != null) && loggedInUser.isFemale() ? "female" : "male")
+ "_portrait?img_id=" + portraitId + "&img_id_token=" + img_id_token + "&t=" + tokenId;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}