CSS не разрешен в связывателе пользовательского интерфейса

0

Я создал панель поиска для своего приложения, используя связывание с пользовательским интерфейсом, но желаемое поведение отличается.

Ui.xml

    <g:HTMLPanel>
<c:SimpleContainer>
        <c:InfoContainerHeader text="{labels.searchFilter}" />  
                <g:FlowPanel ui:field="searchPanel" styleName="{res.style.searchPanel}">
                <g:FlowPanel ui:field="searchLabelPanel" styleName="{res.style.searchLabelPanel}">
                <g:InlineLabel ui:field="searchLabel" styleName="{res.style.searchLabel}" text="{labels.searchFor}"/>
                <g:InlineLabel ui:field="searchRedStarLabel" styleName="{res.style.searchRedStarLabel}">*</g:InlineLabel>                
            </g:FlowPanel>    
            <chzn:ChosenListBox ui:field="searchListBox" styleName="{res.style.searchListBox}" width="35%"/>       
        </g:FlowPanel>
        <g:SimplePanel addStyleNames="{rscb.style.textAlignCenter}">
            <g:Button ui:field="searchButton" text="{clabels.search}"/>
        </g:SimplePanel>
</c:SimpleContainer>
</g:HTMLPanel>

мой css

.search-panel {
    border-radius: 2px 2px 2px 2px;
    border: 1px solid #F2AF00;
    color: #000F16;
    margin: 2% 0;
}

.search-label-panel {
    margin: 0 15px 0 0;
    width: 40%;
    text-align: right;
    float: left;
    font-weight: bold;
}

.search-red-star-label {
    color: #790000;
    margin-left: 4px;
    display: inline;
}

.search-label {
    display: inline;
}

.search-list-box {
    width: 35%;
    margin-bottom: 4px;
    font-size: 13px;
    display: inline-block;
    position: relative;
}

мое связующее

public class SearchFilterViewImpl implements SearchFilterView
{
   HTMLPanel rootElement;
   SearchFilterViewPresenter presenter;

   @Override
   public void setPresenter(SearchFilterViewPresenter presenter)
   {
      this.presenter = presenter;
   }

   @Override
   public void refresh()
   {

   }

   @Override
   public Widget asWidget()
   {
      return rootElement;
   }

   interface FilterViewImplUiBinder extends UiBinder<HTMLPanel, SearchFilterViewImpl>
   {
   }

   private static FilterViewImplUiBinder ourUiBinder = GWT.create(FilterViewImplUiBinder.class);

   public SearchFilterViewImpl()
   {
      rootElement = ourUiBinder.createAndBindUi(this);
   }

   @UiField
   ChosenListBox searchListBox;
   @UiField
   FlowPanel searchPanel;
   @UiField
   FlowPanel searchLabelPanel;
   @UiField
   Label searchLabel;
   @UiField
   Label searchRedStarLabel;

   @Override
   public void setSearchListElements(List<AdminSearchType> searchElements)
   {
      for (AdminSearchType searchElement : searchElements)
      {
         searchListBox.addItem(searchElement.getSearchType(), searchElement.name());
      }
      searchListBox.setPlaceholderTextSingle("What would you like to search for?");
   }

   @Override
   public void setStyles(SearchListBoxCss cssStyle)
   {
      searchPanel.setStylePrimaryName(cssStyle.searchPanel());
      searchLabel.setStylePrimaryName(cssStyle.searchLabelPanel());
      searchLabel.setStylePrimaryName(cssStyle.searchLabel());
      searchRedStarLabel.setStylePrimaryName(cssStyle.searchRedStarLabel());
      searchListBox.setStylePrimaryName(cssStyle.searchListBox());
   }

}

но похоже, что ни одна из моих изменений css не выбрана GWT.

Я ожидаю Изображение 174551

что появляется Изображение 174551

  • 0
    Вы вызывали sureInjected () на вашем CssResource?
  • 0
    @ChrisLercher Нет, я не звонил, и я не знаю, как это назвать. Пожалуйста, ведите меня.
Теги:
gwt

1 ответ

0
Лучший ответ

Для каждого используемого CssResource вам необходимо вызвать securityInjected(). Этот вызов вставляет ссылку на CSS в ваш DOM ("на HTML-страницу").

Я предполагаю, что ваш SearchListBoxCss расширяет CssResource, поэтому просто вызовите cssStyle.ensureInjected(). Фактически, это нужно сделать только один раз, так что вы даже можете сделать статический вызов (но это не имеет большого значения, если вы его назовете неоднократно).

(Примечание. Когда стили встроены непосредственно в файл ui.xml, тогда GWT автоматически вызовет функцию invocation() для вас).

  • 0
    Большое спасибо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню