Длина h: outputLabel изменяется после вызова RichFaces AJAX - PullRequest
0 голосов
/ 16 мая 2011

Я пытался включить RichFaces в одну из наших более сложных страниц, чтобы сделать ее более гладкой через AJAX. Все работает нормально, и это решило несколько проблем, с которыми я сталкивался при использовании обычных бланков, поэтому я действительно хотел бы сохранить их. Единственная проблема на моем пути состоит в том, что после нажатия a4j:commandButton большинство моих h:outputLabel сокращается на 3 пикселя (эти пиксели были слева от текста, что необычно, так как отступы слева, поля и ширина границы все 0px). Это приводит к тому, что многие мои элементы управления слегка сдвигаются и выглядят очень непрофессионально. Мне кажется, что повторный рендеринг сделал более точную работу, чем первоначальный рендеринг. Вот соответствующие части моей страницы:

<a4j:form id="mainForm">
    ...
    <fieldset id="illustrationDetails">
        <h:outputLabel for="product" value="Product" />
        <h:selectOneMenu id="product" value="#{illustrationManager.illustration.product}" valueChangeListener="#{illustrationManager.illustration.setProduct}" onchange="submit()">
            <f:selectItems value="#{illustrationManager.illustration.products}" />
        </h:selectOneMenu>
        <h:outputLabel for="paymentFrequency" value="Payment" />
        <h:selectOneMenu id="paymentFrequency" value="#{illustrationManager.illustration.paymentFrequency}">
            <f:selectItems value="#{illustrationManager.illustration.paymentFrequencies}" />
        </h:selectOneMenu>
        <h:outputLabel for="expenseGroup" value="Expense Group" />
        <h:selectOneMenu id="expenseGroup" value="#{illustrationManager.illustration.expenseGroupId}">
            <f:selectItems value="#{illustrationManager.illustration.expenseGroups}" />
        </h:selectOneMenu>
    </fieldset>
    ...
    <a4j:commandButton id="calculateButton" value="Calculate" action="#{illustrationManager.calculatePremium()}" ajaxSingle="true" reRender="mainForm" />
    ...
</a4j:form>

В указанном выше наборе полей эта проблема возникает у всех, кроме первого ярлыка. Первая метка отображается так, как я считаю правильной (без пикселей слева) при первоначальной визуализации, и в результате повторная визуализация не изменяется.

Любые предложения приветствуются! Кроме того, если вам нужна дополнительная информация, например css, для соответствующих элементов управления, дайте мне знать, и я опубликую ее.

1 Ответ

1 голос
/ 17 мая 2011

Ну, в любом случае, это частичный ответ. 3 пикселя слева от h:outputLabel s были вызваны тем, что реализация JSF Mojarra добавляет символ \n к началу создаваемого им тела тега label. Я так же озадачен, как и парень, который отправил эту ошибку о том, почему это сделано. \n при отображении преобразуется в пробел, и это мои 3 пикселя.

Я не знаю почему, но повторный рендеринг, вызванный моим вызовом RichFaces AJAX, удаляет эти \n символы, поэтому пробел больше не отображается.

В качестве обходного пути я явно поставил пробелы перед всеми моими метками, чтобы они всегда отображались. Я удивлен, что это не обычная проблема.

...