2011-05-16 77 views
0

我一直在试图将RichFaces合并到其中一个更复杂的页面中,以使其通过AJAX运行得更顺畅。一切工作正常,它已经解决了我使用常规表单帖子的一些问题,所以我真的想保留它。我的唯一问题是在按下a4j:commandButton之后,我的大部分h:outputLabel都缩短了3个像素(这些像素位于文本的左侧,由于左侧填充,边距和边框宽度均为0px,这是不常见的)。这会导致我的很多控件轻微移动,看起来非常不专业。在我看来,重新渲染比初始渲染做得更准确。这里是我的页面的相关部分:h:outputLabel在RichFaces AJAX调用后更改的长度

<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

好吧,无论如何,这是一个部分的答案。 h:outputLabels左侧的3个像素是由于Mojarra JSF实现在其创建的label标记主体的开头添加了\n字符。对于为什么这么做提交this bug的人,我感到很困惑。 \n在显示时转换为空格,这就是我的3个像素。

我不知道为什么,但由我的RichFaces AJAX调用触发的重新呈现将删除这些\n字符,因此不再显示空间。

作为解决方法,我已经明确地在所有标签的前面放置空格,以便始终显示空格。我很惊讶这不是一个普遍的问题。