2010-02-28 12 views
8

Yönetilen Bean'imde javascript'i bir dize olarak döndüren bir yöntem var. Yöntem head etiketinden çağrıldığında, iyi çalışır. Ancak, body'dan çağrıldığında, javascript'i oluşturmak yerine tarayıcı onu olduğu gibi yazar. Sorun ne olabilir?JSF'de yönetilen fasulyeden HTML'yi nasıl döndürebilirim?

head içinde #{IndexBean.EastRegionGadgets} yaptığımda benim JSF sayfamda iyi çalışıyor, ancak body içinde değil. HTML'yi olduğu gibi çıkarır. i head yılında #{IndexBean.EastRegionGadgets} yaptığınızda benim JSF sayfasında

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; 

    } 


} 

cevap

18

sorunsuz çalışıyor ama body değil yapar: İşte kodudur. HTML'yi olduğu gibi çıkarır.

Ben HTML çıktısına body yılında <h:outputText> kullandığınız varsayalım. documentation'a göre varsayılan olarak HTML'den kaçar. escape özniteliğini false olarak ayarlamanız gerekir.

<h:outputText value="#{bean.html}" escape="false" /> 
+0

Aslında hiçbir şey kullanmıyordum. Az önce vücutta # {bean.html} yazdım ve HTML'de her şeyi yazdım. Ancak, aynı çizgi kafa etiketinde iyi çalıştı! – TCM

+0

Ah evet, Facelets kullanıyorsunuz. – BalusC

+0

Evet, Facelets kullanıyorum. Html çıkışı için bu outputText'i zorunlu olarak kullanmak zorunda mıyım? yönetilen fasulye? – TCM

İlgili konular