Frage

Ich bin mit Streben 1.1 mit Fliesen.

Ich habe Fliesen mit Definitionen wie

<definition name="cnmp.body.index" extends="cnmp.mainLayout" >
  <put name="title"  value="CNM Portal" />
  <put name="bodytitle"  value="Home" />
  <put name="body"   value="/00-CNM_Landing.jsp" />
</definition>

Ich möchte in der Lage, den Wert des Körpers Parameter in meinem Java-Action-Klasse zu setzen. Was würde ich aus der Action oder Action bekommen, dies zu tun?

public class TileForwardAction extends Action
{
public ActionForward execute(ActionMapping mapping, ActionForm arg1,
        HttpServletRequest arg2, HttpServletResponse arg3) throws Exception
{
    return mapping.findForward("theTile");           
}
}

die Streben Konfigurationsdatei sieht aus wie

  <action-mappings>

  <action   path = "/index"
            type = "com.bellsouth.snt.cnmp.ui.action.TileForwardAction"
            scope = "request"
            input = "cnmp.body.index"
            parameter= "theTile"
    >    
      <forward name="theTile" path="cnmp.body.index"/>       
  </action>

Danke


durch die akzeptierte Antwort inspirierte ich mit folgenden Lösung kam

In der Seite in der Kachel def definiert Ich habe folgende

<% String destAttr=(String)request.getAttribute("dest"); %>

<jsp:include page="<%=destAttr%>" flush="true" />

In der Action-Klasse (weil ich faul war) Ich habe folgende

    request.setAttribute("dest", "landingB.jsp");

Und es hat funktioniert.

War es hilfreich?

Lösung

Sie möchten vielleicht für Controller-Klassen in Kacheln Unterstützung suchen. Die Fliesen def Eintrag wie folgt aussehen würde:

<definition 
  name="cnmp.body.index" 
  extends="cnmp.mainLayout"
  controllerClass="org.yourpackage.YourControllerClass">
  <put name="title"  value="CNM Portal" />
  <put name="bodytitle"  value="Home" />
  <put name="body"   value="/00-CNM_Landing.jsp" />
</definition>

dann würde der YourControllerClass implementieren die zuführen () -Methode wie:

public class YourControllerClasss implements Controller
    public void perform(ComponentContext context,
      HttpServletRequest request,
      HttpServletResponse response,
      ServletContext servletContext)
      throws ServletException, IOException {

      //some logic to determine what the 'body' should be

      if (service.isUp()){
        request.setAttribute("nameOfJSPToImport", "/jsps/import-me.jsp");
      }else{
        request.setAttribute("nameOfJSPToImport", "/jsps/import-me-instead.jsp");
      }

    }
}

Das obige Beispiel könnte ohne Verwendung von TilesControllers direkt in der Aktion durchgeführt werden, aber die TilesController helfen können, Ihre Aktionen weniger unübersichtlich. Das übergeordnete Ziel, unabhängig von Technik ist die NM_Landing.jsp dann wirklich zu ändern, die jsp des „Körper“ Attribut der Definition zu parametrieren verwendet. Zum Beispiel könnte NM_landing.jsp nichts mehr sein, als etwas umfassen nennen wie

<c:import url="${nameOfJSPToImport}" />
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top