2010-02-28 12 views
8

Mam jedną metodę w moim zarządzanym fasoli, która zwraca javascript jako ciąg. Gdy metoda jest wywoływana z tagu head, działa poprawnie. Ale kiedy jest wywoływana od body, przeglądarka zamiast renderowania javascript zapisuje ją tak, jak jest. Jaki może być problem?Jak mogę zwrócić kod HTML z zarządzanego komponentu bean w JSF?

Na mojej stronie JSF po #{IndexBean.EastRegionGadgets} w head działa dobrze, ale nie działa w body. Wydaje kod HTML takim jaki jest. Oto kod:

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; 

    } 


} 

Odpowiedz

18

W mojej stronie JSF kiedy robię #{IndexBean.EastRegionGadgets} w head to działa dobrze, ale to nie robi w body. Wydaje kod HTML takim jaki jest.

Przypuszczam używasz <h:outputText> w body do wyjścia HTML. Zgodnie z documentation domyślnie wymyka się HTML. Musisz ustawić jego atrybut escape na false.

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

Nie, właściwie nic nie używałem. Właśnie napisałem # {bean.html} w treści i napisałem wszystko w HTML. Jednak ta sama linia działała dobrze w tagu głowy! – TCM

+0

Ach tak, używasz Facelets. – BalusC

+0

Tak, używam Facelets. Czy muszę obowiązkowo używać tego outputText do wyprowadzania html? z zarządzanej fasoli? – TCM

Powiązane problemy