可以从Managed Bean以字符串形式返回JSF和HTML代码吗?

时间:2014-08-21 17:16:51

标签: html jsf

在我以前的一个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"

好奇,请告诉我!

1 个答案:

答案 0 :(得分:1)

没有; JSF标记在服务器上解释,但h:outputText的内容被发送到浏览器。

值得注意的是,您当前的方法必须禁止HTML转义才能正常工作,如果您的表还包含用户提供的数据,这是一个安全漏洞。

通常的方法是在支持bean中使用表格数据,并使用迭代的jsf组件,例如h:datatable(或来自您正在使用的任何组件库的等效项),ui:repeatc:foreach来呈现表格。