Java 应该返回带有html代码的字符串的backingbean属性返回空字符串

Java 应该返回带有html代码的字符串的backingbean属性返回空字符串,java,html,jsf,facelets,jsf-1.2,Java,Html,Jsf,Facelets,Jsf 1.2,我的支持bean中有一个返回html代码的属性: public String getHtmlPrevisualizar() { return "<html><head><title></title></head><body>Hello world.</body></html>"; } 公共字符串getHtmlPrevisualizar(){ 返回“你好,世界。”; } 我想做的是在ifra

我的支持bean中有一个返回html代码的属性:

public String getHtmlPrevisualizar() {
    return "<html><head><title></title></head><body>Hello world.</body></html>";
}
公共字符串getHtmlPrevisualizar(){
返回“你好,世界。”;
}
我想做的是在iframe中显示这个html代码。我用javascript来实现这一点。这是xhtml页面:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:a4j="http://richfaces.org/a4j"
      xmlns:rich="http://richfaces.org/rich"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:ui="http://java.sun.com/jsf/facelets">

    <f:loadBundle basename="resources" var="msg" />
<head>
    <title>#{msg['pageTitle']}</title>
</head>
<body>
<ui:composition template="/WEB-INF/facelets/templates/sqa/plantilla.xhtml">  
    <ui:define name="title">#{msg['pageTitle']}</ui:define>
    <ui:define name="javascript">
        <script type="text/javascript">
            function showPreview() {
                var doc = document.getElementById('iframePreview').contentWindow.document;
                doc.open();
                doc.write('#{nuevoEditarEstructura.htmlPrevisualizar}');
                doc.close();
                return false;
            }
            function showPreview2() {
                var doc = document.getElementById('iframePreview').contentWindow.document;
                doc.open();
                doc.write('<html><head><title></title></head><body>Hello world.</body></html>');
                doc.close();
                return false;
            }
        </script>
    </ui:define>
    <ui:define name="content">
        <h:form>
            <a4j:commandLink value="Preview" styleClass="boton" onclick="showPreview();"/>
            <a4j:commandLink value="Preview2" styleClass="boton" onclick="showPreview2();"/>
            <br/>
            <br/>
            <h:outputText value="#{nuevoEditarEstructura.htmlPrevisualizar}" />
            <br/>
            <br/>
            #{nuevoEditarEstructura.htmlPrevisualizar}
            <br/>
            <br/>
        </h:form>
        <iframe id="iframePreview">
        </iframe>
    </ui:define>  
</ui:composition>
</body>
</html>

#{msg['pageTitle']}
#{msg['pageTitle']}
函数showPreview(){
var doc=document.getElementById('iframePreview').contentWindow.document;
doc.open();
doc.write(“#{nuevoEditarEstructura.htmlPrevisualizar}”);
doc.close();
返回false;
}
函数showPreview2(){
var doc=document.getElementById('iframePreview').contentWindow.document;
doc.open();
博士写(‘你好,世界’);
doc.close();
返回false;
}




#{nuevoEditarEstructura.htmlPrevisualizar}

这里有两个链接。第一个从支持bean获取html代码,第二个从javascript中以字符串形式编写html代码。第一个commandLink不起作用。如果我查看页面的源代码,那么thas应该从支持bean返回的值为空

我已经在backingbean中打印了属性的值,也使用了以下内容:

        <h:outputText value="#{nuevoEditarEstructura.htmlPrevisualizar}" />
        <br/>
        <br/>
        #{nuevoEditarEstructura.htmlPrevisualizar}



#{nuevoEditarEstructura.htmlPrevisualizar}
但是什么都没有显示。我调用了
getHtmlPrevisualizar()
并在eclipse控制台中打印了它的内容,它返回了正确的html代码

我知道转义字符和facelet可能会出现一些问题,我本来希望必须处理转义html中的字符,但我什么都没有得到。

在您的
标记组件中设置
escape=“false”

<h:outputText value="#{nuevoEditarEstructura.htmlPrevisualizar}" escape="false" />


嗯,这太尴尬了。问题是支持bean的名称拼写错误,没有其他问题。我希望我们能就此得到某种警告,而不是只是默默地失败。

我明天会在工作中尝试,但为什么这样可以解决问题?我没有得到转义字符串,我只是没有得到任何字符串。如果最后一个不起作用,请尝试创建一个具有该值的字符串并使用其getter,这应该可以做到。最后,问题是一个愚蠢的问题:支持bean的名称拼写错误。谢谢你的帮助。别担心,当我们有太多的压力或者只做一件事而不休息时,这种情况会发生在每个人身上。@Luiggmendoza好吧,这就是问题的实际答案,这就是为什么我写了一个答案而不是评论。我考虑过删除这个问题,但是如果其他人有问题,对backigbean的调用没有返回任何内容,这个问题可以帮助他们检查backingbean名称的拼写是否正确。