JSF Upload Vedio
jsp:
<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
<%@ taglib prefix="rich" uri="http://richfaces.ajax4jsf.org/rich" %>
<%@ taglib prefix="a4j" uri="http://richfaces.org/a4j" %>
<h:panelGroup>
<script type="text/javascript" src="<h:outputText value="#{request.contextPath}/js/flowplayer.3.1.2.min.js"/>"></script>
<script type="text/javascript">
jQuery(function() {
showPlayer();
});
function showPlayer() {
$f("player", "<h:outputText value="#{request.contextPath}/swf/flowplayer-3.1.2.swf"/>", {
clip: {
autoPlay: false,
autoBuffering: true
}
});
}
</script>
<style type="text/css">
#player {
height:340px;
width: 500px;
}
.selected-video {
font-weight:bold;
}
</style>
<table style="width:100%;height:500px;">
<tr>
<td style="width:40%;">
<rich:dataTable id="table" value="#{artistManageBean.profileVideos}" var="video"
style="width:100%;text-align:left;">
<h:column>
<h:panelGroup>
<div id="video<h:outputText value="#{video.id}"/>"
<h:outputText value="class='selected-video'"
rendered="#{artistManageBean.selectedVideo != null and artistManageBean.selectedVideo.id == video.id}"/> >
<a4j:commandLink id="preview" action="#{artistManageBean.doPreviewVideo}"
value="#{video.description != '' ? video.description : 'Unknown Video'}"
reRender="artist:table,artist:videoPreview" oncomplete="showPlayer();"/><br/>
<h:outputText value="#{video.preparedDuration.inMinutes} mins"
rendered="#{video.preparedDuration.inMinutes > 1}"/>
<h:outputText value="#{video.preparedDuration.inMinutes} min"
rendered="#{video.preparedDuration.inMinutes == 1}"/><br/>
<h:outputText value="less than minute"
rendered="#{video.preparedDuration.inMinutes < 1}"/>
<a4j:commandLink id="edit" value="Edit" immediate="true"
reRender="artist:uploadVideo"
action="#{artistManageBean.doEditVideo}"/>
<a4j:commandLink id="del" value="Delete" immediate="true"
reRender="artist:table,artist:videoPreview" oncomplete="showPlayer();"
action="#{artistManageBean.doRemoveVideo}"/>
</div>
</h:panelGroup>
</h:column>
</rich:dataTable>
<a4j:outputPanel id="uploadVideo">
<a4j:commandButton reRender="uploadVideo" rendered="#{artistManageBean.profileVideo == null}"
value="Upload Video" action="#{artistManageBean.doCreateVideo}"/>
<h:panelGrid columns="2" rendered="#{artistManageBean.profileVideo != null}">
<h:outputText value="#{artistManageBean.profileVideo.name != null ? 'Replace Current Video' : 'Upload Video'}"/>
<h:panelGroup id="video">
<rich:fileUpload id="videoUpload" acceptedTypes="mpg,flv,mov,avi,mpeg,mp4,mkv" required="true"
immediate="true" listWidth="280" listHeight="60" autoclear="false"
maxFilesQuantity="1" addControlLabel="Upload" immediateUpload="true"
requiredMessage="Video is required."
fileUploadListener="#{artistManageBean.uploadVideoListener}">
</rich:fileUpload>
<rich:message for="videoUpload" errorClass="error_single"/>
</h:panelGroup>
<h:outputLabel value="Description: " />
<h:inputText value="#{artistManageBean.profileVideo.description}" />
<h:outputLabel value="Duration: " />
<h:selectOneListbox id="duration" style="width:50px;" size="1"
value="#{artistManageBean.profileVideo.duration}">
<f:selectItem itemValue="1" itemLabel="1"/>
<f:selectItem itemValue="2" itemLabel="2"/>
<f:selectItem itemValue="3" itemLabel="3"/>
<f:selectItem itemValue="4" itemLabel="4"/>
<f:selectItem itemValue="5" itemLabel="5"/>
</h:selectOneListbox>
<h:outputLabel value=" " />
<h:panelGroup>
<a4j:commandButton id="upload" value="Upload" reRender="artist:table,artist:videoPreview,artist:uploadVideo"
oncomplete="showPlayer();" action="#{artistManageBean.doSaveVideo}"/>
<a4j:commandButton id="cancelUpload" value="Cancel" reRender="artist:table,artist:uploadVideo"
action="#{artistManageBean.doCancelVideo}"/>
</h:panelGroup>
</h:panelGrid>
</a4j:outputPanel>
</td>
<td style="vertical-align:top; width:60%;text-align:center;">
<div id="preview" style="width:500px; height:400px;">
<a4j:outputPanel id="videoPreview">
<h:panelGroup rendered="#{artistManageBean.selectedVideo == null}">
<a id="player" href="#"></a>
</h:panelGroup>
<h:panelGroup rendered="#{artistManageBean.selectedVideo != null}">
<h3><h:outputText value="#{artistManageBean.selectedVideo.description != ''
? artistManageBean.selectedVideo.description : 'Unknown Video'}"/></h3>
<div style="width:100%;">
<a id="player" href="<h:outputText value='#{request.contextPath}/video/#{artistManageBean.selectedVideo.name.fullPath}'/>"></a>
<h:panelGroup rendered="#{permissions.publicVideoGranted}">
<h:outputLink id="viewVd" value="#{request.contextPath}/admin/video/#{artistManageBean.publicVideo.id}"
rendered="#{artistManageBean.publicVideo != null}"
title="Go to the public video">
<h:outputText value="View public video"/>
</h:outputLink>
<a4j:commandLink id="creatVd" value="Publicate video to website"
action="#{artistManageBean.doPublishVideo}"
rendered="#{artistManageBean.publicVideo == null}"
oncomplete="showPlayer();"
reRender="artist:videoPreview"/>
</h:panelGroup>
</div>
</h:panelGroup>
</a4j:outputPanel>
</div>
</td>
</tr>
</table>
</h:panelGroup>
Background bean:
private MediaVO<ProfileVideo> profileVideoVO = null;
private ProfileVideo selectedProfileVideo = null;
private ProfileVideo profileVideo;
private boolean isEditVideo = false;
public List<ProfileVideo> getProfileVideos() {
if (profileVideoVO == null) {
profileVideoVO = new MediaVO<ProfileVideo>();
if (getMemberProfile().getId() != null) {
try {
profileVideoVO.getCurrent().addAll(profileVideoManager.getByMemberProfileId(
getMemberProfile().getId()));
if (profileVideoVO.hasCurrent()) {
setSelectedVideo(CollectionUtils.first(profileVideoVO.getCurrent()));
} else {
profileVideo = new ProfileVideo();
}
} catch (FinderException e) {
e.printStackTrace();
}
} else {
selectedProfileVideo = null;
}
}
return profileVideoVO.getCurrent();
}
public ProfileVideo getSelectedVideo() {
return selectedProfileVideo;
}
public String doPreviewVideo() {
ProfileVideo video = (ProfileVideo) requestMap().get("video");
if (video != null) {
setSelectedVideo(video);
}
else {
MessageUtil.addGlobalErrorMessage("Can't preview selected video: it's not found.");
}
return ActionForward.NONE;
}
public String doRemoveVideo() {
ProfileVideo video = (ProfileVideo) requestMap().get("video");
if (video != null) {
profileVideoVO.addRemoved(video);
MessageUtil.addGlobalInfoMessage("Video will be removed with saving artist profile.");
}
else {
MessageUtil.addGlobalErrorMessage("Can't remove video: it's not found.");
}
return ActionForward.NONE;
}
public void uploadVideoListener(UploadEvent event) {
InputStream fileInputStream = null;
try {
final UploadItem upload = event.getUploadItem();
if (upload.isTempFile()) {
// remove previously removed video
removeOldVideo();
// upload new video
fileInputStream = new FileInputStream(upload.getFile());
final VideoHelperWrapper wrapper = new VideoHelperWrapper();
wrapper.initialize();
wrapper.download(upload.getFileName(), fileInputStream);
profileVideo.setName(wrapper.getMediaName());
MessageUtil.addGlobalInfoMessage("Video was uploaded successfully.");
}
} catch (Exception e) {
e.printStackTrace();
MessageUtil.addGlobalErrorMessage("Cannot upload video.");
} finally {
DataAccessUtil.closeStream(fileInputStream);
}
}
public String doSaveVideo() {
if (profileVideo != null) {
final MediaName videoName = profileVideo.getName();
if (videoName == null) {
MessageUtil.addGlobalErrorMessage("Please, upload video file.");
} else {
ProfileVideo temp = new ProfileVideo();
temp.setName(videoName);
temp.setDescription(profileVideo.getDescription());
temp.setDuration(profileVideo.getDuration());
temp.setMemberProfileId(memberProfile.getId());
setSelectedVideo(temp);
if (profileVideo.getId() != null) {
temp.setId(profileVideo.getId());
profileVideoVO.addChanged(temp);
} else if (!isEditVideo){
profileVideoVO.addCreated(temp);
}
profileVideo = null;
}
}
isEditVideo = false;
return ActionForward.NONE;
}
public String doCancelVideo() {
if (!isEditVideo && profileVideo.getName() != null) {
VideoHelper.removeFile(profileVideo.getName().getFullPath());
}
profileVideo = null;
isEditVideo = false;
return ActionForward.NONE;
}
public String doCreateVideo() {
profileVideo = new ProfileVideo();
isEditVideo= false;
return ActionForward.NONE;
}
public String doEditVideo() {
isEditVideo = true;
ProfileVideo video = (ProfileVideo) requestMap().get("video");
if (video!= null) {
profileVideo = video;
} else {
profileVideo = new ProfileVideo();
}
return ActionForward.NONE;
}
private void removeOldVideo() {
if (profileVideo.getName() != null) {
VideoHelper.removeFile(profileVideo.getName().getFullPath());
profileVideo.setName(null);
}
}
public void setProfileVideo(ProfileVideo profileVideo) {
this.profileVideo = profileVideo;
}
public ProfileVideo getProfileVideo() {
return this.profileVideo;
}
分享到:
相关推荐
Pro JSF and HTML5 shows you how to leverage the full potential of JavaServer Faces (JSF) and HTML5. This book is for Java developers who aspire to build sophisticated, enterprise-grade web experiences...
[TipTec Development] JSF & Facelets & JBoss Seam 核心技术 (英文版) [TipTec Development] Essential JSF, Facelets & JBoss Seam (E-Book) ☆ 出版信息:☆ [作者信息] Kent Ka Iok Tong [出版机构] TipTec ...
Model MVC2 1)Architecture of Framework JSF 2) Fonctionnement de JSF 3) make JSF 4) Introduction à PrimeFaces
利用JSF2.0和servlet3.0做的上传的例子,并实现单个文件上传的组件,虽然有些小限制,但是对单个上传功能完全可以实现。花了一整天的时间来研究啊,不容易!顶起吧。有什么想法请发表评论
[Apress] JSF 2 APIs & JBoss Seam 基础教程 (英文版) [Apress] Beginning JSF 2 APIs and JBoss Seam (E-Book) ☆ 出版信息:☆ [作者信息] Kent Ka Iok Tong [出版机构] Apress [出版日期] 2009年05月25日 ...
jsf实例 JSF学习 JSF jar包 JSF jsf实例 JSF学习 JSF jar包 JSFjsf实例 JSF学习 JSF jar包 JSF jsf实例 JSF学习 JSF jar包 JSF
jsf 分页 jsf 分页 jsf 分页 jsf 分页
JSF&Primefaces入门基础知识
JSF是一种用于构建Java Web 应用程序的标准框架(是Java Community Process 规定的JSR-127标准)。JSF(Java Server Faces)技术为开发基于网络用户界面的Java开发者提供了标准的编程接口API以及标签库。就像Struts框架...
《JSF_实战》非常好的JSF学习书《JSF_实战》非常好的JSF学习书《JSF_实战》非常好的JSF学习书《JSF_实战》非常好的JSF学习书《JSF_实战》非常好的JSF学习书《JSF_实战》非常好的JSF学习书《JSF_实战》非常好的JSF...
JSF中文教程JSF中文教程JSF中文教程JSF中文教程
主要讲述JSF的工作方式 JSF的工作方式 JSF架构 JSF模型 JSF事件类型
JSF开发介绍JSF开发介绍JSF开发介绍JSF开发介绍JSF开发介绍JSF开发介绍JSF开发介绍JSF开发介绍JSF开发介绍
第一个JSF程序,初学JSF者必备,jsf架包 jsf实例
jsf1.2 core jsf jsf核心
之前为朋友做的生活吧项目源码,可以直接导入eclipse运行
jsf 视频 java faces jsf 视频 java faces jsf 视频 java faces
================================= JSF开发必备JAR ================================= <br>《JSF入门简单中文版》开篇提到JSF开发需要的jar,' 但是按其中提供的方法: <br>jstl.jar 与 ...
JSF入门教程 JSF入门教程 JSF入门教程
jsf 中文文档jsf 中文文档jsf 中文文档jsf 中文文档