gpt4 book ai didi

jsf - 如何从JSF中的托管bean返回HTML?

转载 作者:行者123 更新时间:2023-12-04 05:10:41 25 4
gpt4 key购买 nike

我的托管bean中有一个方法,该方法以字符串形式返回javascript。从head标记调用该方法时,它可以正常工作。但是,当从body调用它时,浏览器(而不是呈现javascript)将其照原样写入。可能是什么问题?

在我的JSF页面中,当我在#{IndexBean.EastRegionGadgets}中执行head时,它工作正常,但在body中却没有。它按原样输出HTML。这是代码:

package BusinessFacade;

import java.util.ArrayList;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.component.html.HtmlOutputText;


enum REGION{
NORTH,EAST,WEST;
}

class Gadget{
private String gadgetCode = "";
private REGION gadgetRegion = REGION.WEST;

public Gadget(String gadgetCode, REGION gadgetRegion){
this.gadgetCode = gadgetCode;
this.gadgetRegion = gadgetRegion;
}

public String getGadgetCode() {
return gadgetCode;
}

public void setGadgetCode(String gadgetCode) {
this.gadgetCode = gadgetCode;
}

public REGION getGadgetRegion() {
return gadgetRegion;
}

public void setGadgetRegion(REGION gadgetRegion) {
this.gadgetRegion = gadgetRegion;
}

}

@ManagedBean(name="IndexBean")
@RequestScoped
public class IndexBean {
ArrayList<Gadget> _list;
public IndexBean() {

}

@PostConstruct
public void initialize(){
_list = new ArrayList<Gadget>();
Gadget objGadget = new Gadget("<script type='text/javascript' src='http://cdn.widgetserver.com/syndication/subscriber/InsertWidget.js'></script><script>if (WIDGETBOX) WIDGETBOX.renderWidget('78d12c15-dc87-42f2-a78a-3f62a91a119a');</script><noscript>Get the <a href='http://www.widgetbox.com/widget/crystal-clock'>Crystal Clock</a> widget and many other <a href='http://www.widgetbox.com/'>great free widgets</a> at <a href='http://www.widgetbox.com'>Widgetbox</a>! Not seeing a widget? (<a href='http://docs.widgetbox.com/using-widgets/installing-widgets/why-cant-i-see-my-widget/'>More info</a>)</noscript>",REGION.WEST);
_list.add(objGadget);

objGadget = new Gadget("<script type='text/javascript' src='http://cdn.widgetserver.com/syndication/subscriber/InsertWidget.js'></script><script>if (WIDGETBOX) WIDGETBOX.renderWidget('1ccc3dee-8266-4b84-8191-13a4bf584d0c');</script><noscript>Get the <a href='http://www.widgetbox.com/widget/custom-clock'>Shiny Clock</a> widget and many other <a href='http://www.widgetbox.com/'>great free widgets</a> at <a href='http://www.widgetbox.com'>Widgetbox</a>! Not seeing a widget? (<a href='http://docs.widgetbox.com/using-widgets/installing-widgets/why-cant-i-see-my-widget/'>More info</a>)</noscript>",REGION.EAST);
_list.add(objGadget);



}

public String getWestRegionGadgets(){
HtmlOutputText objHtmlOutputText = new HtmlOutputText();
String strGadgets = "";
for(Gadget objGadget:_list ){
if(objGadget.getGadgetRegion() == REGION.WEST){
strGadgets += objGadget.getGadgetCode();
}
}
return strGadgets;

}

public String getEastRegionGadgets(){

String strGadgets = "";
for(Gadget objGadget:_list ){
if(objGadget.getGadgetRegion() == REGION.EAST){
strGadgets += objGadget.getGadgetCode();
}
}
return strGadgets;

}


}

最佳答案

In my JSF page when i do #{IndexBean.EastRegionGadgets} in head it works fine but it doesn't in body. It outputs the HTML as it is.



我想您正在 <h:outputText>中使用 body输出HTML。根据 documentation,默认情况下会转义HTML。您需要将其 escape属性设置为 false
<h:outputText value="#{bean.html}" escape="false" />

关于jsf - 如何从JSF中的托管bean返回HTML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2351639/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com