#jsf-2 #primefaces
#jsf-2 #primefaces
Вопрос:
До того, как мое приложение использовало primefaces версии 3.4.2, в то время ширина компонента selectonemenu не подстраивалась под текст метки SelectItems и была исправлена в соответствии с определенным полем, но после перехода на версию primefaces 5 вся ширина компонента selectonemenu по умолчанию теперь подстраивается под текст метки SelectItems. Значение SelectItems было извлечено из компонента, и в пользовательском интерфейсе это выглядит уродливо, когда снова и снова компонент selectonemenu изменение его ширины в соответствии со значением метки SelectItems.
<p:outputPanel id="groupId">
<fieldset class="noBorderFieldsetclass">
<legend class="noBorderFiledSetLegendclass">Detail</legend>
<table width="100%">
<tr>
<td colspan="9"><p:spacer height="10"></p:spacer></td>
</tr>
<tr>
<td styleClass="titlesClass">Title1:</td>
<td colspan="8">
<p:selectOneMenu id="selectOneMenuId1" style="width:130px;" value="#{bean.selectOneMenuId1Value}" immediate="true">
<f:selectItem itemLabel="Select" itemValue="" />
<f:selectItems value="#{bean.title1List}" var="title1" itemLabel="#{title1.label}" itemValue="#{title1.labelValue}" />
<p:ajax update="selectOneMenuId2 selectOneMenuId3 selectOneMenuId4 selectOneMenuId5" listener="#{bean.title1Listener}" process="@this"/>
</p:selectOneMenu>
</td>
</tr>
<tr><td styleClass="titlesClass">Title2:</td>
<td>
<p:selectOneMenu id="selectOneMenuId2" style="width: 130px;" value="#{bean.selectOneMenuId2Value}">
<f:selectItem itemLabel="Select" itemValue="" />
<f:selectItems value="#{bean.title2List}" var="title2" itemLabel="#{title2.label}" itemValue="#{title2.labelValue}" />
<p:ajax update="selectOneMenuId3 selectOneMenuId4 selectOneMenuId5" listener="#{bean.title2Listener}" process="@this"/>
</p:selectOneMenu>
</td>
---
---
</tr>
</table>
Пожалуйста, дайте мне знать, как я могу зафиксировать ширину компонента selectonemenu и не настраивать в соответствии со значениями SelectItems, полученными из компонента.Я не могу установить ширину компонента selectonemenu глобально, потому что ширина каждого компонента selectonemenu определяется в соответствии с макетом экрана.
Комментарии:
1. Кажется, я не могу воспроизвести вашу проблему, когда я устанавливаю style =»width: 100px;» в моих компонентах selectOneMenu ширина фиксирована и никогда не меняется
2. используете ли вы primefaces 5 версии, потому что в версии primefaces 5 компонент selectOneMenu изменяет свою ширину на основе самых длинных параметров в списке, т. е. списка элементов выбора. В старой версии primefaces этой проблемы не было
3. Да, я использую primefaces 5, попробуйте использовать firebug для проверки вашего элемента и убедитесь, что ширина соответствует ширине и что никакие другие классы стилей не манипулируют onemenu
4. Я использую браузер IE, потому что наш клиент поддерживает браузер IE. В firefox все правильно, но в IE проблема есть
5. Ооо… вы должны были упомянуть, что это была проблема IE, это очень важно. Какая версия?