使用<h:GraphicImage>或<img>标记从webapp/webtext/Deploy

使用<h:GraphicImage>或<img>标记从webapp/webtext/Deploy

我需要使用JSF显示Web应用程序中部署文件夹之外的图像<h:graphicimage>标记或HTML<img>标签。我怎样才能做到这一点?



交互式爱情
浏览 962回答 3
3回答

慕尼黑的夜晚无繁华

为了达到你所需要的<h:graphicImage>或<img>标签,您需要创建一个Tomcatv 7别名,以便将外部路径映射到Web应用程序的上下文中。要做到这一点,您需要指定web应用程序的上下文..最简单的方法是定义一个meta-INF/context.xml文件,其内容如下:<Context&nbsp;path="/myapp"&nbsp;aliases="/images=/path/to/external/images"></Context>然后,在重新启动Tomcat服务器之后,可以使用<h:graphicImage>或<img>标签如下:<h:graphicImage&nbsp;value="/images/my-image.png">或<img&nbsp;src="/myapp/images/my-image.png">*注意上下文路径对于标记是必需的,但对于如果不需要通过HTTPGET方法获得映像,另一种可能的方法是使用PrimeFaces<p:fileDownload>标签(使用命令链接或命令按钮标签-http POST法).在你的法布雷特:<h:form> &nbsp;&nbsp;<h:commandLink&nbsp;id="downloadLink"&nbsp;value="Download">&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;<p:fileDownload&nbsp;value="#{fileDownloader.getStream(file.path)}"&nbsp;/>&nbsp;&nbsp;</h:commandLink></h:form在你的豆子里:@ManagedBean@ApplicationScopepublic&nbsp;class&nbsp;FileDownloader&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;StreamedContent&nbsp;getStream(String&nbsp;absPath)&nbsp;throws&nbsp;Exception&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FileInputStream&nbsp;fis&nbsp;=&nbsp;new&nbsp;FileInputStream(absPath); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BufferedInputStream&nbsp;bis&nbsp;=&nbsp;new&nbsp;BufferedInputStream(fis); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StreamedContent&nbsp;content&nbsp;=&nbsp;new&nbsp;DefaultStreamedContent(bis); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;content; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;}}

阿晨1998

在PrimeFaces中,您可以这样实现bean:private&nbsp;StreamedContent&nbsp;image;public&nbsp;void&nbsp;setImage(StreamedContent&nbsp;image)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;this.image&nbsp;=&nbsp;image;}public&nbsp;StreamedContent&nbsp;getImage()&nbsp;throws&nbsp;Exception&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;image;}public&nbsp;void&nbsp;prepImage()&nbsp;throws&nbsp;Exception&nbsp;{File&nbsp;file&nbsp;=&nbsp;new&nbsp;File("/path/to/your/image.png"); &nbsp;&nbsp;&nbsp;&nbsp;InputStream&nbsp;input&nbsp;=&nbsp;new&nbsp;FileInputStream(file);ExternalContext&nbsp;externalContext&nbsp;=&nbsp;FacesContext.getCurrentInstance().getExternalContext(); &nbsp;&nbsp;&nbsp;&nbsp;setImage(new&nbsp;DefaultStreamedContent(input,externalContext.getMimeType(file.getName()),&nbsp;file.getName()));}在HTML Faclet中:<body&nbsp;onload="#{yourBean.prepImage()}"></body>&nbsp;<p:graphicImage&nbsp;value="#{youyBean.image}"&nbsp;style="width:100%;height:100%"&nbsp;cache="false"&nbsp;> </p:graphicImage>我建议在GraphicImage组件中设置属性cache=“false”。
打开App,查看更多内容
随时随地看视频慕课网APP