4

Primefaces-application でレンダリングされた画像を取得しようとしています。これは、アコーディオンパネルの外でうまく機能しています:

<h:graphicImage library="images" name="testi.JPG" />

しかし、アコーディオンパネル内で使用しようとすると、もう機能しません:

<p:accordionPanel>
    <p:tab title="Godfather Part I">
        <h:panelGrid columns="2" cellpadding="10">
            <h:graphicImage  library="images" value="testi.JPG" />

Primefaces には画像のタグがありますが、ライブラリ タグがまったくないので、それも試してみました。

<p:tab title="Godfather Part II">
        <h:panelGrid columns="2" cellpadding="10">
                    <p:graphicImage url="/resources/images/testi.jpg" />

それで、誰かがそれを行う方法とそれを行う正しい方法を教えてもらえますか?さまざまな選択肢がたくさんありますが、私の場合は何も機能していません。パスがまったくない場所など、アプリケーションにユニバーサルイメージフォルダーのように追加するにはどうすればよいですか?

<?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">
<head><link type="text/css" rel="stylesheet" href="/temp/faces/javax.faces.resource/theme.css?ln=primefaces-flick" /><link type="text/css" rel="stylesheet" href="/temp/faces/javax.faces.resource/primefaces.css?ln=primefaces&amp;v=3.2" /><link type="text/css" rel="stylesheet" href="/temp/faces/javax.faces.resource/layout/layout.css?ln=primefaces&amp;v=3.2" /><script type="text/javascript" src="/temp/faces/javax.faces.resource/jquery/jquery.js?ln=primefaces&amp;v=3.2"></script><script type="text/javascript" src="/temp/faces/javax.faces.resource/primefaces.js?ln=primefaces&amp;v=3.2"></script><script type="text/javascript" src="/temp/faces/javax.faces.resource/layout/layout.js?ln=primefaces&amp;v=3.2"></script>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <title>Primefaces Template</title></head><body>

ソースの表示: これはアコーディオン パネルの外にあり、動作しています:

<h:graphicImage library="images" name="testi.JPG" />

------------------->HTML:

<img src="/temp/faces/javax.faces.resource/testi.JPG?ln=images" />

パネルの外側で動作している同じコード行を使用するアコーディオン パネル:

<p:tab title="Godfather Part I">
        <h:panelGrid columns="2" cellpadding="10">
            <h:graphicImage  library="images" value="testi.JPG" />
            <h:outputText value="The story begins as Don Vito Corleone,

------------------>HTML:

<td><img src="testi.JPG" /></td>
<td>The story begins as Don Vito Corleone,

Primefaces タグの使用:

<p:tab title="Godfather Part II">
        <h:panelGrid columns="2" cellpadding="10">
                    <p:graphicImage url="/resources/images/testi.jpg" />

------------------>HTML:

<td><img id="j_idt29:j_idt32" src="/temp/resources/images/testi.jpg" alt="" /></td>

編集:これは機能していますが、なぜですか?

<h:graphicImage value="#{resource['images:testi.JPG']}"/>

Sなしのリソース!!

ありがとうございました!サーミ語

4

1 に答える 1

14

あなたの間違いは、value属性の代わりにname属性を使用したことです:

<h:graphicImage library="images" value="testi.JPG" />

リソースを参照するときは、代わりに属性を使用する必要があります。name

<h:graphicImage library="images" name="testi.JPG" />

つまり、value属性はリソース名ではなくURLを指します。


具体library的な問題とは関係なく、属性の正しい使い方を完全に理解しているわけではありません。画像、CSS、JSファイルを互いに分離することを目的としたものではありません。<h:graphicImage>には、の唯一のタグ名<h:outputStylesheet>との<h:outputScript>タグがすでにあります。このlibrary属性は、image / CSS/JSファイルが外部JARファイルに保存されているモジュラーWebアプリケーションで使用されることになっています。このlibrary属性を使用すると、それらをバージョン管理し、メインのWebアプリでオーバーライドできます。JSFリソースライブラリとは何ですか?また、どのように使用する必要がありますか?も参照してください。

その間違った属性の使用法<h:graphicImage>削除するように修正します。library

<h:graphicImage name="images/testi.JPG" />

または、すべてのリソースを配置する、十分に価値のあるWebアプリ固有のライブラリを紹介します。

<h:graphicImage library="default" name="images/testi.JPG" />
于 2012-04-26T16:34:16.027 に答える