可以通过 Ctrl+click 或 Middleclick 像链接一样在新 window 中打开 p:button
Make possible to open p:button in new window by Ctrl+click or Middleclick like links
我有一个 primefaces (5.1) 数据表,最右边的列中有一些按钮:
<p:column headerText="Actions" style="width: 60px">
<p:button id="uploadButton" title="upload files"
icon="fa fa-edit" outcome="uploadFilesToVersion">
<f:param name="versionId" value="#{version.id}" />
</p:button>
<!-- other buttons come here-->
</p:column>
注意 "version" 是环境的局部(循环)变量 p:dataTable 而 uploadFilesToVersion.xhtml 是用户上传文件到 "version" 的视图id = version.id)
请注意,该按钮不会调用任何 bean 方法,我只是使用了 p:button 元素,因为它的样式。现在我想让用户可以在新的浏览器 tab/window 中打开按钮的结果(即 URL)。这将是有益的,因为我希望同时保留 dataTable 的过滤器状态(当用户在浏览器中单击 "back" 时它会丢失)。
如何实现?
编辑:当然可以使用一些 CSS 来模仿按钮的外观,但我想避免这种情况:
<p:column headerText="Actions" style="width: 60px">
<p:link id="uploadButton" title="upload files"
outcome="uploadFilesToVersion"
styleClass="ui-button ui-widget ui-state-default ui-corner-all ui-button-icon-only">
<span class="ui-button-icon-left ui-icon ui-c fa fa-edit"></span>
<span class="ui-button-text ui-c">ui-button</span>
<f:param name="versionId" value="#{version.id}" />
</p:link>
<!-- other buttons come here-->
</p:column>
不可能,因为 <p:button>
使用 JavaScript 而不是 <a href>
导航。您正在寻找的行为只能使用 <a href>
.
您最好的选择是使用 <h|p:link>
,它会生成 <a>
,并将其样式设置为看起来像一个按钮。
<h:link ... styleClass="ui-button ui-state-default ui-corner-all">
<i class="fa fa-edit" />
</h:link>
必要时用 tagfile 包装以减少样板文件。
<my:linkButton ... icon="fa fa-edit" />
我有一个 primefaces (5.1) 数据表,最右边的列中有一些按钮:
<p:column headerText="Actions" style="width: 60px">
<p:button id="uploadButton" title="upload files"
icon="fa fa-edit" outcome="uploadFilesToVersion">
<f:param name="versionId" value="#{version.id}" />
</p:button>
<!-- other buttons come here-->
</p:column>
注意 "version" 是环境的局部(循环)变量 p:dataTable 而 uploadFilesToVersion.xhtml 是用户上传文件到 "version" 的视图id = version.id)
请注意,该按钮不会调用任何 bean 方法,我只是使用了 p:button 元素,因为它的样式。现在我想让用户可以在新的浏览器 tab/window 中打开按钮的结果(即 URL)。这将是有益的,因为我希望同时保留 dataTable 的过滤器状态(当用户在浏览器中单击 "back" 时它会丢失)。
如何实现?
编辑:当然可以使用一些 CSS 来模仿按钮的外观,但我想避免这种情况:
<p:column headerText="Actions" style="width: 60px">
<p:link id="uploadButton" title="upload files"
outcome="uploadFilesToVersion"
styleClass="ui-button ui-widget ui-state-default ui-corner-all ui-button-icon-only">
<span class="ui-button-icon-left ui-icon ui-c fa fa-edit"></span>
<span class="ui-button-text ui-c">ui-button</span>
<f:param name="versionId" value="#{version.id}" />
</p:link>
<!-- other buttons come here-->
</p:column>
不可能,因为 <p:button>
使用 JavaScript 而不是 <a href>
导航。您正在寻找的行为只能使用 <a href>
.
您最好的选择是使用 <h|p:link>
,它会生成 <a>
,并将其样式设置为看起来像一个按钮。
<h:link ... styleClass="ui-button ui-state-default ui-corner-all">
<i class="fa fa-edit" />
</h:link>
必要时用 tagfile 包装以减少样板文件。
<my:linkButton ... icon="fa fa-edit" />