在我的项目中,我从用户那里获取原始文本并将其发送到服务器以执行以下操作
决定每个单词的类型
span在它周围添加一个相关的 CSS 类
保留原始文本结构(即 \r\n表示段落结尾,因此我可以将其包裹在 a 中p)
将结果显示给用户
使用
<h:outputText value="#{wordTypeBean.wordTypeValues}" escape="false" />
Run Code Online (Sandbox Code Playgroud)
简而言之,我在服务器端做所有的 html 标记。该return编辑结果是这样的(当然,作为一个长字符串,缩进了可读性的结果):
<h:outputText value="#{wordTypeBean.wordTypeValues}" escape="false" />
Run Code Online (Sandbox Code Playgroud)
但是在文本周围h:outputText生成span元素。尽管到目前为止我没有看到任何问题。但是,我有一种感觉,这是不对的,因为我读的是在HTML它是非法的地方p里面span。
有没有办法强制围绕来自 Bean 的文本h:outputText生成div,或者有没有合法/更好的方法来实现这一点?
这个,
<h:outputText value="#{wordTypeBean.wordTypeValues}" escape="false" />
Run Code Online (Sandbox Code Playgroud)
不会生成任何额外的 HTML。所以你实际上没有那个标签。
根据您的 HTML DOM 检查器屏幕截图,您似乎确实拥有以下内容:
<h:outputText id="wordTypeEditor" value="#{wordTypeBean.wordTypeValues}" escape="false" />
Run Code Online (Sandbox Code Playgroud)
实际上,这将生成一个<span>元素,因为您已经明确指定了一个必须在客户端结束的id属性,即该属性。
摆脱该id属性,将其移动到<h:panelGroup layout="block">包装<h:outputText>.
<h:panelGroup id="wordTypeEditor" layout="block">
<h:outputText value="#{wordTypeBean.wordTypeValues}" escape="false" />
</h:panelGroup>
Run Code Online (Sandbox Code Playgroud)
如果您不需要在 ajax 中的其他地方引用它,只需 a<div id="wordTypeEditor">也可以。
<div id="wordTypeEditor">
<h:outputText value="#{wordTypeBean.wordTypeValues}" escape="false" />
</div>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4513 次 |
| 最近记录: |