1

以下のコードを使用して、サーバーから画像を取得しています。

<a href="#">
    <img src="<%
        if(user.getImageURL()!=null){
           out.print(user.getImageURL);
        }else{
           out.print("images/no-profile-pic-small.jpg");
        }%>" />
</a>

上記のコードは、imageURL が null の場合を処理しますが、imageURL が適切な URL を返すが、その画像がサーバー上で見つからない、つまり 404 Not Found の場合はどのように処理すればよいですか?

編集: 画像は別のサーバーにあります。

4

2 に答える 2

2

現時点では、JSP でパスをチェックすることはなく、パスが存在する場合は HTML にパスを配置するだけです。これは、HTTP 要求が画像に対して送信されるまで、パスが存在するかどうかわからないことを意味します。次の 2 つの主なオプションがあります。

ファイルを含める前に、JSP コードのそのパスにファイルがあるかどうかを確認してください。そうでない場合は、プレースホルダーにフォールバックします。

<% 
    String userImagePath = user.getImageURL();
    File userImage= new File(userImagePath);
    if(!userImage.exists()){
        userImagePath = "fallBackImagePath.png";
    }
%>

<img src="<%= userImagePath %>"/>

または、HTML で非表示の画像を処理できるようにします。たとえば、次のようにします。

<img src="non-existent.png" class="fallBackBackground"/>

<style>
    .fallBackBackground {
        background: url(./placeholderImage.png);
    }
</style>

これにより、必要のないフォールバック画像が提供される可能性があります。さらに、画像が同じサイズであることに依存しています。

于 2013-04-14T10:42:38.230 に答える
0

jquery とonerrorattributeを使用してこの問題を解決しました。

私のサーバー側のコードは次のとおりです。

<a href="#">
    <img src="<%
        if(user.getImageURL()!=null){
           out.print(user.getImageURL);
        }else{
           out.print("images/no-profile-pic-small.jpg");
        }%>" onerror="profilePicNotFound(this);" 
    />
</a>

そして小さなjquery関数:

function profilePicNotFound(image){
    image.src='images/no-profile-pic-small.jpg';
}

これは、イメージが別のサーバーにある場合にうまく機能します。詳細はこちら

于 2013-04-15T19:00:21.113 に答える