【问题标题】:<o:form styleClass> not rendered when using MyFaces instead of Mojarra<o:form styleClass> 使用 MyFaces 而不是 Mojarra 时未呈现
【发布时间】:2016-03-31 23:53:56
【问题描述】:

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

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

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

然后我意识到,如果我使用 TomEE 的默认 myFaces,“OmniFaces v1.8.3 Form”不会以“style”或“styleClass”呈现 css 类属性。它在 Mojarra 上运行良好,但现在我的 HTML 布局损坏了,我必须修复它。

我使用“OmniFaces Form”的原因是,我真的很想使用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 的东西?

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

(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 引导程序)。

请帮帮我!谢谢。

【问题讨论】:

  • 表单的生成标记说明了什么?可以接受表单内的
    吗?
  • @Mahendran Ayyarsamy Kandiar - 虽然我必须编辑所有 jsf 页面,但您的回答(在里面添加 div)解决了我的问题,谢谢!我会暂时留下我的问题,因为我希望有一个直接的答案。
  • 顺便说一句,整个类属性被删除,其他属性与mojarra相同。
  • 尝试使用omnifaces-2.2。如果问题仍然存在,请将其发布到github.com/omnifaces/omnifaces/issues
  • 生成的 HTML 输出是什么样子的?在浏览器中右键单击页面,查看源代码,你看到&lt;o:form&gt; 还在,还是看到HTML &lt;form&gt;?症状表明它无法识别/编译/渲染。然后,您应该说明您是如何安装 OmniFaces 的。

标签: css jsf jsf-2 myfaces omnifaces


【解决方案1】:

这是&lt;o:form&gt; 中的一个错误。它initially 扩展自UIForm 类,但它没有定义所有非通用属性。我将 fixed 改为从 HtmlForm 扩展,现在它在 MyFaces 中也适用于我。它在今天的2.3-SNAPSHOT 中可用。

【讨论】:

  • 酷!谢谢!实际上,我正在使用 OmniFaces 1.8.3,现在正在努力启动 TomEE7.0.0-M1,以便我可以使用您修复的最新 OmniFaces SNAPSHOT .....
  • @HirofumiOkino 如果您在使用 TomEE7 和 OmniFaces 2.3 时遇到问题,请打开一个新问题
猜你喜欢
相关资源
最近更新 更多
热门标签