liferayliferay-7liferay-auiliferay-service-builder

Liferay 7: hidden aui input won't set value based on parameter


I have an entity with a primary key and two other fields. I am able to display them in a Search Container in my primary View JSP, and I want to implement an edit/update function, so I created a different JSP for that. I pass the properties of the entity I wish to edit in portlet:renderURL portlet:param tags just like this:

<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 the update-page JSP if I set any input field hidden, the parameter based values disappear, so the controller cannot process the fields' values.

i.e.:

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

Note: I only want to hide the primary key field, the controller servlet should be able to process it and update my entity based on the primary key, like this:

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

The funny thing is, that everything just works when I set the input fields text type, but I wouldn't want the users to enter the primary key, duh...

Any ideas how could I fix this?


Solution

  • I found a solution to the problem.

    So, after long hours of testing I found out that I just could not get the values stored in parameters just as ${paramName} anywhere in a simple HTML tag, but I still don't know why.

    What I did was request for the needed values stored within the parameters inside a JSP scriptlet just like this:

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

    Then I was good to go with my form:

    <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'd be really grateful if someone told me why my initial implementation didn't work, I mean referring to the parameter values as mentioned above, ${paramName}

    Thanks in advance!