2013-03-14 2 views
0

JSF-2.0, Mojarra 2.1.19, PrimeFaces 3.4.1кнопка JSF с настраиваемым динамическим изображением

Я знаю, что мы можем добавить изображение кнопки через определение собственного класса CSS, как:

.imageButton { 
    background-image:url(#{resource['images/button.png']}); 
} 

Но проблема в том, что картинка url исходит от bean-компонента, и она имеет различное значение для каждого пользователя, поэтому предоставление статического URL-адреса изображения не будет работать. Мне нужно. например:

<p:button value="#{loginBean.loggeduser.name}" icon="#{loginBean.loggeduser.picurl}"/> 

Но, как и ожидалось, это не работает из-за того, что свойство icon ожидает имя класса. Также я попытался определить компонент p:graphicImage внутри кнопки, но не похож на обычный значок.

Казалось бы, как это:

profile picture

Верхняя картинка может быть сделано с заранее определенными значками с кодом ниже:

<p:commandButton value="sth" icon="ui-icon-star"/> 

Но, как я уже сказал, я не хочу для использования статического значка.

Заранее спасибо.

ответ

1

У вас есть несколько вариантов. Я перечислил два из них ниже.

  1. Использование встроенного стиля в качестве атрибута баттона:

    style='background: url(#{resource['images/button.png']}) no-repeat;' 
    
  2. Nest изображения внутри кнопки (обратите внимание, что он не будет работать с командной кнопкой):

    <h:button ...> 
        <h:graphicImage .../> 
    </h:button> 
    

И при необходимости используйте другие стили CSS для вывода текста.

+0

первое решение не работает даже с 'фон: URL (# {г esource ['# {loginBean.loggeduser.picurl}']}) no-repeat; '. А вторая не обеспечивает поведения . –

+0

Если у вас есть URL-адрес изображения, не используйте '# resources', поскольку вы фактически не получаете изображение из своих ресурсов:' style = 'background: url (# {loginBean.loggeduser.picurl}) no-repeat! Important;' ' – partlov

+0

Не вставляйте выражения EL, и он будет работать нормально :) – skuntsel

1

я просто проверил primefaces 3,4 ручной и я проверить, что <p:commanButton> имеет атрибут styleClass, так что я думаю, вы можете использовать это,

<p:button value="#{loginBean.loggeduser.name}" styleClass="#{loginBean.loggeduser.picStyle}"/> 

и я хотел бы определить в моем бэк-боба:

public String picStyle() { 
    if (userA) { 
    //get userA's image 
    return "yourcss"; 
    } else { 
    return "default"; 
    } 
} 

я не уверен, что это лучший способ, но я предполагаю, что это должно работать даже с style атрибутом

+0

OP не хочет/должен загружать изображение из стиля CSS. Вместо этого он хочет/должен получить изображение, основываясь на некотором свойстве компонента, например, имени пользователя. – skuntsel

+0

вот что я пытаюсь сделать. – berkay

Смежные вопросы