Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using if-else in JSP

I'm using the following code to print the name of the user on the browser:

<body>
  <form>
    <h1>Hello! I'm duke! What's you name?</h1>
    <input type="text" name="user"><br><br>
    <input type="submit" value="submit">&nbsp;&nbsp;&nbsp;&nbsp;
    <input type="reset">
  </form>
  <%String user=request.getParameter("user"); %>
  <%if(user == null || user.length() == 0){
    out.print("I see! You don't have a name.. well.. Hello no name");   
   }
   else {%>
      <%@ include file="response.jsp" %>
   <% } %>  
</body>

response.jsp:

<body>
    <h1>Hello</h1>
    <%= request.getParameter("user") %>
 body>

Every time I execute it, the message

I see! You don't have a name.. well.. Hello no name

gets displayed even though I haven't entered anything in the textbox. However if I enter anything in it, then the response.jsp code is displayed, but I don't want the first message to be displayed on execution. How do I make that happen? Please suggest changes in my code.

P.S. I had read in some questions that instead of checking for equality with null, one must check it for not equals, so that it doesn't throw null pointer exception. when I tried the same, i.e. if(user != null && ..), I got NullPointerException.

like image 979
Awani Avatar asked Nov 14 '14 12:11

Awani


People also ask

Can we use if else in JSP?

JSP if else is a control statement to get the code executed on the basis of results derived conditional statement defined. This is very much used not only in JSP programming but also in other programming languages like Java, C, C++, python, and many. It is very common to see these statements in any existing code.

How do you use if else condition in HTML?

You can not use the If else condition in HTML code (Without JavaScript). Because HTML is a markup language and not a programming language. You need to do logic codes either server-side or with Javascript.

How do you use if else condition in JavaScript?

Use if to specify a block of code to be executed, if a specified condition is true. Use else to specify a block of code to be executed, if the same condition is false. Use else if to specify a new condition to test, if the first condition is false. Use switch to select one of many blocks of code to be executed.

Which of the following tag is used to the conditions in JSP?

The jsp:useBean, jsp:setProperty and jsp:getProperty tags are used for bean development.


2 Answers

It's almost always advisable to not use scriptlets in your JSP. They're considered bad form. Instead, try using JSTL (JSP Standard Tag Library) combined with EL (Expression Language) to run the conditional logic you're trying to do. As an added benefit, JSTL also includes other important features like looping.

Instead of:

<%String user=request.getParameter("user"); %>
<%if(user == null || user.length() == 0){
    out.print("I see! You don't have a name.. well.. Hello no name");   
}
else {%>
    <%@ include file="response.jsp" %>
<% } %>

Use:

<c:choose>
    <c:when test="${empty user}">
        I see!  You don't have a name.. well.. Hello no name
    </c:when>
    <c:otherwise>
        <%@ include file="response.jsp" %>
    </c:otherwise>
</c:choose>

Also, unless you plan on using response.jsp somewhere else in your code, it might be easier to just include the html in your otherwise statement:

<c:otherwise>
    <h1>Hello</h1>
    ${user}
</c:otherwise>

Also of note. To use the core tag, you must import it as follows:

 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

You want to make it so the user will receive a message when the user submits a username. The easiest way to do this is to not print a message at all when the "user" param is null. You can do some validation to give an error message when the user submits null. This is a more standard approach to your problem. To accomplish this:

In scriptlet:

<% String user = request.getParameter("user");
   if( user != null && user.length() > 0 ) {
       <%@ include file="response.jsp" %>
   }
%>

In jstl:

<c:if test="${not empty user}">
    <%@ include file="response.jsp" %>
</c:if>
like image 198
sfedak Avatar answered Sep 19 '22 07:09

sfedak


Instead of if-else condition use if in both conditions. it will work that way but not sure why.

like image 39
MR AND Avatar answered Sep 20 '22 07:09

MR AND