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 ...
在本文中,我们将深入探讨如何使用JavaServer Faces (JSF) 2.0与Servlet 3.0结合实现文件上传功能。JSF是Java平台上的一种Web应用程序开发框架,而Servlet 3.0则是用于处理HTTP请求的核心Java API,两者结合可以提供...
### JavaServer Faces (JSF) 与 PrimeFaces 入门详解 #### 一、MVC2 模型 **JavaServer Faces**(简称 JSF)是 Java 平台的一个标准框架,用于构建企业级 Web 应用程序。它遵循 MVC(Model-View-Controller)设计...
**JSF(JavaServer Faces)** 是一个Java平台上的用户界面框架,用于构建Web应用程序。JSF的核心概念是组件模型,它允许开发者通过拖放组件来构建用户界面,然后将这些组件与后端业务逻辑相连接。这个"JSF实践项目...
[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(JavaServer Faces)** 是一个Java平台上的用户界面框架,用于构建Web应用程序。它为开发人员提供了一种模型-视图-控制器(MVC)架构,简化了前端和后端之间的交互。JSF提供了组件库,使得创建动态、交互式的...
JSF是一种用于构建Java Web 应用程序的标准框架(是Java Community Process 规定的JSR-127标准)。JSF(Java Server Faces)技术为开发基于网络用户界面的Java开发者提供了标准的编程接口API以及标签库。就像Struts框架...
**JSF(JavaServer Faces)** 是一个Java平台上的用户界面框架,用于构建Web应用程序。它简化了开发人员创建交互式、数据驱动的Web界面的过程。JSF提供了一个组件模型,允许开发者通过拖放组件的方式来构建用户界面...
《JSF_实战》非常好的JSF学习书《JSF_实战》非常好的JSF学习书《JSF_实战》非常好的JSF学习书《JSF_实战》非常好的JSF学习书《JSF_实战》非常好的JSF学习书《JSF_实战》非常好的JSF学习书《JSF_实战》非常好的JSF...
JavaServer Faces(JSF)是Java平台上的一种用于构建Web应用程序的MVC(Model-View-Controller)框架。它提供了一种声明式的方式来构建用户界面,简化了开发过程,并且与Java EE平台无缝集成。本系列资料包括《JSF...
JavaServer Faces (JSF) 是一个用于构建用户界面的Java Web框架,它简化了创建和维护Web应用程序的复杂性。JSF的核心理念是提供一种组件化的编程模型,将UI元素与业务逻辑分离,使得开发者可以专注于应用的逻辑部分...
JSF(JavaServer Faces)是Java平台上用于构建用户界面的Web框架,尤其在处理表单和数据交互方面表现强大。本项目聚焦于JSF的文件上传功能,特别是针对大文件的上传,允许用户上传最大可达1.99GB的文件。在实际应用...
**JSF(JavaServer Faces)** 是一种Java平台上的Web应用程序开发框架,它提供了一种组件化和事件驱动的方式来创建用户界面。JSF的核心概念包括组件、事件、渲染器和生命周期,这些元素共同构建了一个强大的MVC...
在JavaServer Faces (JSF)框架中,分页是一种常用的技术,用于处理大量数据时提供更好的用户体验。当数据集过大,一次性加载所有记录到页面上会导致性能下降且用户界面响应变慢。通过分页,我们可以将数据分成多个...
**JSF 文件下载实现** 在JavaServer Faces (JSF)框架中,实现文件下载功能是一项常见的需求。在本文中,我们将深入探讨如何使用JSF来实现在Web应用程序中下载文件的功能。主要涉及的关键知识点包括: 1. **JSF上...
**JSF 1.2核心详解** JavaServer Faces (JSF) 是Java平台上的一个用于构建用户界面的组件模型框架,特别适用于Web应用程序的开发。JSF 1.2是该框架的一个重要版本,它在JSF 1.1的基础上进行了一系列的改进和增强,...
**JSF(JavaServer Faces)** 是一个Java平台上的用户界面框架,用于构建Web应用程序。它提供了一种组件化和事件驱动的方式来创建交互式的Web界面。JSF API 和 JSF Impl 是JSF框架的核心组成部分。 **jsf-api.jar**...
JavaScript Faces (JSF) 是Java平台上的一种用于构建用户界面的模型-视图-控制器(MVC)框架,它简化了Web应用程序的开发。本资源包包含了JSF从入门到进阶的多个方面,包括基础教程、核心组件库(LIB)、Ajax4JSF的使用...