仅显示带有图像的命令按钮

Posted

技术标签:

【中文标题】仅显示带有图像的命令按钮【英文标题】:Displaying command button with image only 【发布时间】:2011-12-21 15:39:12 【问题描述】:

我试图仅在我的页面上显示一个带有图像的按钮,但我看到的只是带有 ^ 的按钮。以下是我的按钮的代码:

<p:commandButton onclick="lineSearch.show();" image="backgroung-image:url(/images/title_logo.jpg)"/> 
<p:dialog header="Modal Dialog" widgetVar="lineSearch" modal="true" onCloseUpdate="lineIdField" showEffect="scale" hideEffect="explode">  
    <ui:include src="lineSearch.xhtml"/>
</p:dialog>

图像确实存在于图像文件夹中。该按钮在页面中呈现如下:

<button id="j_idt23:j_idt27" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-icon-only" type="submit" onclick="lineSearch.show();;PrimeFaces.ab(formId:'j_idt23',source:'j_idt23:j_idt27',process:'@all');return false;" name="j_idt23:j_idt27" role="button" aria-disabled="false">
    <span class="ui-button-icon-primary ui-icon backgroung-image:url(/images/title_logo.jpg)"></span>
    <span class="ui-button-text">ui-button</span>
</button>
<script type="text/javascript">
    widget_j_idt23_j_idt27 = new PrimeFaces.widget.CommandButton('j_idt23:j_idt27', text:false,icons:primary:'backgroung-image:url(/images/title_logo.jpg)');
</script>

谢谢!!!

【问题讨论】:

真的渲染了backgroung-image吗? @BalusC 这是它呈现的内容:awesomescreenshot.com/0d9nm5ueb 您为什么编辑问题以在image 属性中复制这个不正确的样式属性? 真正拥有哪些代码(在 XHTML 文件中)以及它真正呈现了什么? (在 HTML 源代码中)?请不要编辑复制粘贴,您可能会在没有意识到的情况下删除错误,甚至引入新的错误(就像您上次编辑时一样)。 @BalusC 很抱歉编辑代码。这实际上就是现在的内容和渲染的内容。 【参考方案1】:

image 属性必须引用 CSS 类名,而不是普通的 CSS 属性。所以,应该这样做:

<p:commandButton image="someCssClassName" /> 

在您的 CSS 中添加以下内容:

.someCssClassName 
    background-image: url(images/title_logo.jpg)

请注意,我修正了属性名称中的主要错字,并从图像 URL 中删除了前导斜杠,否则它将相对于站点的域根进行解析;以上期望title_logo.jpg 位于/image 文件夹中,而/image 文件夹又位于CSS 文件所在的文件夹中。

但是,我认为这个不太笨拙:

<p:commandLink action="#bean.submit">
    <h:graphicImage name="images/title_logo.jpg" />
</p:commandLink>

【讨论】:

@Olivier:请阅读***.com/questions/11988415/… 了解有关如何使用 JSF 资源的相关问题(这是 name 属性所指向的)。 嗯,好的。在我的情况下,name 属性不起作用,因为我没有创建与之关联的库。抱歉这个糟糕的编辑 BalusC @Olivier:显然你没有把它放在/resources 文件夹中。我的回答中的特定示例期望图像文件位于/resources/images/title_logo.jpg 请注意,image 属性现已弃用,请改用icon 属性。 从richfaces迁移..唯一可以使用commanLink的,无需添加更多css。【参考方案2】:

我建议同时使用“P:coomandLink”和“P:graphicImage”。 我在 webapps 下创建了一个文件夹,并将我的 jpg 文件放在这个文件夹下。 这段代码对我来说很好。 祝你好运。

<p:commandLink action="#MyClass.myMethod">
   <p:graphicImage value="images/Max-Burger.jpg"  />
</p:commandLink>

【讨论】:

【参考方案3】:

把它放在你的 css 样式上:

    .dolar-icon 
    background-image: url("#facesContext.externalContext.request.contextPath/resources/imagenes/dolar.png") !important;

现在您可以使用您在 css 中定义的图标“dolar-icon”了。

<p:commandButton action="#as.fe" icon="dolar-icon"/>

【讨论】:

【参考方案4】:

更简单:

<p:commandButton icon="ui-icon-XXXXX">

您可以选择不同的图标:https://api.jqueryui.com/theming/icons/ 和 http://www.primefaces.org/showcase/ui/misc/fa.xhtml

【讨论】:

如果你想要一个现有的图标,那只会更容易。如果您想要自己的图像(就像 OP 一样),这根本行不通。 只是一个简单的方法

以上是关于仅显示带有图像的命令按钮的主要内容,如果未能解决你的问题,请参考以下文章

UIButton ImageView 仅显示颜色填充

仅带有图像选项的相机意图

视图控制器仅在第一次正确加载图像

需要帮助以在命令按钮中显示图标图像

如何使用带有 Streamlit 的按钮显示文件夹中的图像?

如何使带有自定义背景图像的按钮在Android中显示点击动画