在我以前的一个Web应用程序中,我使用了存储在我的Managed bean中的String来存储HTML格式的表,然后使用带有JSF的textOutput返回它。我想知道返回包含JSF标签的HTML是否可行。例如:
My Managed Bean:
@ManagedBean(name = "account")
@ViewScoped
public class Account{
String subForm = "";
/* getters and setters */
public String login()
{
boolean a = true;
subForm = "<div id='userdivcor' class='form-inline has-success'>"
+ "<h:inputText id='corruser' type='text' value='#{account.username}'/>"
+ "</div>";
return "loginError.xhtml";
}
我的.xhtml文件:
//some code leading to my form
<h:form id='form' method='post' onsubmit='return fullCheck()'>
<h:outputText id="htmlStuffTwo" value="#{account.subForm}" escape="false"/>
</h:form>
//remainder of code
使用h:outputText,我可以渲染返回的String值而没有任何错误吗?目前,我正在尝试更大规模,但是当文本进行渲染时,我的价值就像疯了似的:
"hdOMomYGEH3QfwJfNhPPECOG2Pv3gt/2F1n7dFGGp6ItPlhzDREjEJTSax3NjvsVDdiBZQsB"
好奇,请告诉我!
答案 0 :(得分:1)
没有; JSF标记在服务器上解释,但h:outputText的内容被发送到浏览器。
值得注意的是,您当前的方法必须禁止HTML转义才能正常工作,如果您的表还包含用户提供的数据,这是一个安全漏洞。
通常的方法是在支持bean中使用表格数据,并使用迭代的jsf组件,例如h:datatable
(或来自您正在使用的任何组件库的等效项),ui:repeat
或c:foreach
来呈现表格。