使用MyFaces代替Mojarra时,<o:form styleclass =“”>未呈现

时间:2015-12-26 12:35:33

标签: css jsf jsf-2 myfaces omnifaces

我一直在使用JSF2.0 TomEE 1.7.3开发一个网站。 在我提出的最后一个问题中:

What are the recommended JSF dependencies with TomEE1.7.x?

我得到了建议并决定从GlassFish(Mojarra)Faces迁移到myFaces,因为myFaces是TomEE的标准JSF实现。

然后我意识到&#34; OmniFaces v1.8.3 Form&#34;没有使用&#34; style&#34;渲染css类属性如果我使用TomEE的默认myFaces,那么&#34; styleClass&#34;它与Mojarra一起工作得很好,但现在我的HTML布局坏了,我必须解决它。

我使用的原因&#34; OmniFaces Form&#34;是的,我真的想使用includeRequestParams="true"功能,这适用于Mojarra和myFaces。

我的xhtml看起来像吼叫:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:o="http://omnifaces.org/ui"
>
<h:body>
    <ui:composition template="templates/common.xhtml">
        <ui:define name="content">
            <o:form prependId="false" styleClass="form-horizontal" includeRequestParams="true">
                <!-- some inputText, labels, and buttons here -->
            </o:form>
        </ui:define>
    </ui:composition>
</h:body>
</html>

我在HTML中得到的是:

<form id="j_id_1k" name="j_id_1k" method="post" action="/foo.xhtml">

class="form-horizontal"未呈现。

我错过了什么吗? xmlns是错误还是已弃用? 或者它只是模块之间的不一致而我无能为力呢? 或者是否有等同于includeRequestParams的东西?

我尝试过这样的事情来附加css类以使用javascript形成标记(我知道这不是一个好方法):

(function() {
    var forms = document.forms;
    for (var i = 0; i < forms.length; i++){
        if (forms[i].id !== "headerForm"){
            forms[i].class = "form-horizontal";
        }
    }
})();

但它没有修复布局,可能是因为css样式附加到表单内部的对象,而不是表单本身(我使用css引导程序)。

请帮帮我!谢谢。

1 个答案:

答案 0 :(得分:2)

<o:form>这是一个错误。它initiallyUIForm类延伸,但它并没有定义所有非常见属性。我fixedHtmlForm延伸而来,现在它也适用于MyFaces。它已于今天2.3-SNAPSHOT提供。