2017-11-14 3 views
0

Ich habe eine Entität mit einem Primärschlüssel und zwei anderen Feldern. Ich kann sie in einem Such-Container in meiner primären View-JSP anzeigen, und ich möchte eine Edit/Update-Funktion implementieren, also habe ich eine andere JSP dafür erstellt. Ich gehe die Eigenschaften der Einheit I in Portlet bearbeiten möchten: renderURLPortlet: param-Tags wie folgt aus:Liferay 7: versteckte AUI-Eingabe wird keinen Wert basierend auf Parameter

<portlet:renderURL var="editEntity"> 
    <portlet:param name="jspPage" value="/update-page.jsp" /> 
    <portlet:param name="primaryKey" value="<%= entityId %>" /> 
    <portlet:param name="name" value="<%= entityName%>" /> 
    <portlet:param name="description" value="<%= entityDesc%>" /> 
</portlet:renderURL> 

In der Update-Seite JSP, wenn ich gesetzt jede Wenn das Eingabefeld ausgeblendet wird, verschwinden die Parameterwerte, sodass der Controller die Werte der Felder nicht verarbeiten kann.

dh:

<aui:input name="primaryKey" type="hidden" value="${primaryKey}" /> 
<aui:input name="primaryKey" type="hidden" value="${name}" /> 
<aui:input name="primaryKey" type="hidden" value="${description}" /> 

Hinweis: Ich habe nur das Primärschlüsselfeld ausblenden möchten, sollte der Controller-Servlet der Lage sein, es zu verarbeiten und meine Einheit aktualisieren basierend auf dem Primärschlüssel, wie folgt aus:

<aui:input name="primaryKey" type="text" value="${name}" /> 
<aui:input name="primaryKey" type="text" value="${description}" /> 

das Komische ist, dass alles funktioniert nur, wenn ich der Eingabetexttyp Felder, aber ich würde die Benutzer den Primärschlüssel eingeben nicht will, duh ...

Irgendwelche Ideen Wie könnte ich das beheben?

+0

ist dies innerhalb ? –

+0

Natürlich. Ich weiß nicht, warum es nicht richtig funktioniert – MEZesUBI

Antwort

0

Ich fand eine Lösung für das Problem.

So, nach langen Stunden des Tests fand ich heraus, dass ich nur als $ in Parametern gespeichert nur die Werte nicht bekommen konnte {paramName} überall in einem einfachen HTML-Tag, aber ich weiß noch nicht, warum.

Was ich tat, war Anforderung für die benötigten Werte innerhalb der Parameter innerhalb einer JSP scriptlet gespeichert wie folgt aus:

<% 
String primaryKey = request.getParameter("primaryKey"); 
String name = request.getParameter("name"); 
String description = request.getParameter("description"); 
%> 

Dann war ich gut mit meiner Form zu gehen:

<aui:form action="<%= updateAbbreviationURL %>" method="post"> 
    <aui:input name="primaryKey" type="hidden" value="<%= primaryKey %>" /> 
    <aui:input name="entityName" label="Name" type="text" value="<%= name %>" /> 
    <aui:input name="entityDesc" label="Description" type="text" value="<%= description %>" /> 
    <aui:button name="submit" value="submit" type="submit" /> 
    <aui:button name="cancel" value="cancel" type="button" onClick="<%= viewURL %>" />   
</aui:form> 

I Ich wäre wirklich dankbar, wenn mir jemand sagen würde, warum meine anfängliche Implementierung nicht funktioniert hat, ich meine die Parameterwerte wie oben erwähnt, $ {paramName}

Danke in voraus!

0

Es ist Arbeit für mich

view.jsp

<%@ include file="init.jsp" %> 
<portlet:actionURL name="testURL" var="testURL" /> 
<aui:form name="fm" method="post" action="<%= testURL.toString()%>"> 
<aui:input name="primaryKey" type="hidden" value="123" /> 
<aui:button-row> 
     <aui:button name="submit" type="submit" value="OK" /> 
    </aui:button-row> 
</aui:form> 

TestmvcportletPortlet.java

package com.example.portlet; 

import com.liferay.portal.kernel.exception.SystemException; 
import com.liferay.portal.kernel.portlet.bridges.mvc.MVCPortlet; 
import com.liferay.portal.kernel.util.ParamUtil; 

import javax.portlet.ActionRequest; 
import javax.portlet.ActionResponse; 
import javax.portlet.Portlet; 
import javax.portlet.ProcessAction; 

import org.osgi.service.component.annotations.Component; 

@Component(
immediate = true, 
property = { 
    "com.liferay.portlet.display-category=category.sample", 
    "com.liferay.portlet.instanceable=true", 
    "javax.portlet.display-name=Test Portlet", 
    "javax.portlet.init-param.template-path=/", 
    "javax.portlet.init-param.view-template=/view.jsp", 
    "javax.portlet.resource-bundle=content.Language", 
    "javax.portlet.security-role-ref=power-user,user" 
}, 
service = Portlet.class 
) 
public class TestmvcportletPortlet extends MVCPortlet { 

@ProcessAction(name = "testURL") 
    public void addBook(ActionRequest actionRequest,ActionResponse actionResponse) throws SystemException { 
     String a = ParamUtil.getString(actionRequest, "primaryKey"); 
     System.out.println("Value is "+a); 

    } 
} 

haben herausgefunden, Sie etwas, das Sie Code verpasst?

+0

Sorry, ich war wahrscheinlich nicht so klar. Mein Problem ist mit Parameter basierten Werten. Ich werde meinen Beitrag bearbeiten, um zu klären – MEZesUBI