lucifer
lucifer

Reputation: 2327

How to use requestScope to pass value from jsp to portlet

I am trying to send some value in my jsp to a portlet class.I am using jstl to achieve that ,my requirement is to use requestScope to pass the value in the portlet.Here i have seen that when i am using requestScope to create URL in portlet it is working fine,but in case of value passing it is not working,i am posting my code what i have done so far

<fmt:setBundle basename="Language-ext"/>
<form action="<c:out value='${requestScope.registerUserActionUrl}'/>" method="POST">
<table width="200px">
 <tr>
  <td colspan="2">
    <font color="#FF0000"><c:out 
       value="${requestScope.errorMsg}"/></font>
</td>
</tr>
<tr>
  <td><fmt:message key="label.firstName"/></td>
    <td><input type="text" name="firstName" value="${requestScope.User.firstName}"></input></td>
 </tr>
 <tr>
<td>&nbsp;</td>
</tr>
 <tr>
<td><fmt:message key="label.lastName"/></td>
<td><input type="text" name="lastName" value="${requestScope.User.lastName}"></input></td>
 </tr>
 <tr>
<td>&nbsp;</td>
 </tr>
 <tr>
<td><font color="#FF0000"><b>*</b></font>&nbsp;<fmt:message key="label.email"/></td>
<td><input type="text" name="email" value="${requestScope.User.email}"></input>     </td>
</tr>
 <tr>
<td>&nbsp;</td>
</tr>
<tr align="center">
 <td colspan="2">
    <input type="submit"/>
    &nbsp;
  <a href="<c:out value='${requestScope.resetRenderUrl}'/>">
    <b><fmt:message key="label.reset"/></b>
  </a>
</td>
</tr>

And this is my bean class

public class User implements Serializable{

/**
 * 
 */
private static final long serialVersionUID = -5729328658617182010L;
private String firstName;
private String lastName;
private String email;

public User(String firstName,String lastName,String email){

    super();
    this.firstName = firstName;
    this.lastName = lastName;
    this.email = email;
}

public String getFirstName() {
    return firstName;
}

public void setFirstName(String firstName) {
    this.firstName = firstName;
}

public String getLastName() {
    return lastName;
}

public void setLastName(String lastName) {
    this.lastName = lastName;
}

public String getEmail() {
    return email;
}

public void setEmail(String email) {
    this.email = email;
}

And this is the portlet where i am catching the value

@ProcessAction(name = "registerUserAction")
public void registerUser(ActionRequest request, ActionResponse response)
        throws PortletException, IOException {
    String email = request.getParameter("email");
    System.out.println("Email :"+email +","+request.getParameter("firstName"));
    // --set the information entered by the user on the registration

But i am getting null for both email and firstName .Somebody please help

Upvotes: 0

Views: 865

Answers (1)

Tomas Pinos
Tomas Pinos

Reputation: 2862

Answer relevant for Liferay 6.2

By default, Liferay 6.2 requires request parameters for a given portlet to be prefixed with the portlet namespace. In plain HTML, you need to specify the namespace for each request parameter / form field explicitely by using <portlet:namespace/> tag:

<input type="text" name="<portlet:namespace/>firstName" value="${requestScope.User.firstName}">

Don't forget the required TLD import:

<%@taglib prefix="portlet" uri="http://java.sun.com/portlet" %>

Only the namespaced parameters are visible to the portlet (through standard portlet API).

Upvotes: 1

Related Questions