Logic Present Tag (...)

Present tag -This tag evaluates its nested body contents if the specified value is present in the request.

Logic Present Tag (...)

Logic Present Tag (<logic:present >...</logic:present >) 

     


present tag -This tag evaluates its nested body contents if the specified value is present in the request.

This tag checks the current request and depending on which attribute is specified, it evaluates the nested body content of this tag only if the specified value is present. 

Attributes of Present Tag

Attribute Name Description
cookie

It checks  the existence of a cookie with the specified name.

header

It checks the existence of an HTTP header with the specified name. The name match is performed in a case insensitive manner.

name

It checks the existence of a JSP bean, in any scope, with the specified name. If property is also specified, checks for a non-null property value for the specified property.

parameter

It checks the existence of at least one occurrence of the specified request parameter on this request, even if the parameter value is a zero-length string.

property

It checks the existence of a non-null property value, returned by a property getter method on the JSP bean (in any scope) that is specified by the name attribute. Property references can be simple, nested, and/or indexed.

role

It checks whether the currently authenticated user (if any) has been associated with any of the specified security roles. Use a comma-delimited list to check for multiple roles. 

scope

The bean scope within which to search for the bean named by the name property, or "any scope" if not specified.

user

It checks whether the currently authenticated user principal has the specified name.

 

Logic notPresent Tag (<logic:not Present>...</logic:not Present>) 

notPresent tag -This tag evaluates its nested body content if the specified value is not present in the request.

Tag evaluation of the nested body content occurs only if the specified value is not available in the request i.e... works in reverses to present tag.

Attributes of notPresent  Tag

Attribute Name Description
cookie

It checks  the existence of a cookie with the specified name.

header

It checks the existence of an HTTP header with the specified name. The name match is performed in a case insensitive manner.

name

It checks the existence of a JSP bean, in any scope, with the specified name. If property is also specified, checks for a non-null property value for the specified property.

parameter

It checks the existence of at least one occurrence of the specified request parameter on this request, even if the parameter value is a zero-length string.

property

It checks the existence of a non-null property value, returned by a property getter method on the JSP bean (in any scope) that is specified by the name attribute. Property references can be simple, nested, and/or indexed.

role

It checks whether the currently authenticated user (if any) has been associated with the specified security role.

scope

The bean scope within which to search for the bean named by the name property, or "any scope" if not specified.

user

It checks whether the currently authenticated user principal has the specified name.

 

Example Illustrating the use of the present <logic:present > and the notPresent <logic:notPresent > logic tags.

Here you will learn to use the Struts  Logic tags. We will cover an example that will show  a comparison between  the two logic tags (ie..<logic:present > and the <logic:notPresent >).

Example code

Creating an Action  Class

Develop a simple action class LogicAction.java.

package roseindia.net;

import java.io.*;
import java.util.*;

/**

* @author Amit Gupta
* @Web http://www.roseindia.net
* @Email [email protected]

**/
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import org.apache.struts.action.*;

public class LogicAction extends Action 
{
  public ActionForward execute(ActionMapping mapping,
  ActionForm form,
  HttpServletRequest request,
  HttpServletResponse response)
  throws IOException, ServletException {

  

  return mapping.findForward("success");
  }
}

Creating Form Bean

Our form bean class contains only one property text. Here is the code of FormBean (LogicForm.java)

package roseindia.net;

import org.apache.struts.action.*;

/**

* @author Amit Gupta
* @Web http://www.roseindia.net
* @Email [email protected]

**/

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class EmptyForm extends ActionForm 
{
  
  private String text = "";
 
  public String getText() 
  {
  return text;
  }
  
  public void setText(String text) 
  {
  this.text=text;
  }
 
  
  
  
}

Defining form Bean in struts-config.xml file

Add the following entry in the struts-config.xml file for defining the form bean 0

<form-bean name="LogicForm"  type="roseindia.net.LogicForm" />

 Developing the Action Mapping in the struts-config.xml

Here, Action mapping helps to select the method from the Action class for specific requests.

<action path="/LogicAction"
type="roseindia.net.LogicAction"
name="LogicForm"
scope="request"
input="/pages/InputLogic.jsp">
<forward name="success" path="/pages/output.jsp"/>
</action>

Developing the InputLogic.jsp page

<%@ taglib uri="/tags/struts-html" prefix="html" %>
<%@ taglib uri="/tags/struts-logic" prefix="logic" %>
<%@ taglib uri="/tags/struts-bean" prefix="bean" %>
<html:html>
<head>
<title>Using &lt;logic&gt; Tags</title>
</head>

<body>
<h1>Using &lt;logic&gt; Tags</h1>

<html:form action="/LogicAction" method ="post">

<h2>Enter text :</h2>
<html:text property="text"/>
<html:submit value="Submit"/> 
<html:cancel/>
</html:form>
</body>
</html:html>

Developing the output.jsp page: 1

Notice the property values

<%@ taglib uri="/tags/struts-bean" prefix="bean" %>
<%@ taglib uri="/tags/struts-logic" prefix="logic" %>

<HTML>
<HEAD>
<TITLE>Here's Your Data...</TITLE>
</HEAD>
<BODY>
<H4>Here's Your Data...</H4>

<h4>The text entered is:

<bean:write name="LogicForm1" property="text"/></h4>

<logic:present name="LogicForm1" property="text" >
<h5>Using the tag &lt;logic:present &gt; </h5> 
Result: Successfully supported 
</logic:present>

<logic:notPresent name="LogicForm1" property="text1" >
<h5>Using the tag&lt;logic:notPresent&gt;</h5> 
Result: Support for a Variable other than a String is not Present </logic:notPresent>


</BODY>
</HTML>

Add the following line in the index.jsp to call the form. 2

<li>
<html:link page="/pages/InputLogic.jsp">Struts File Upload</html:link>
<br>
Example demonstrates  how LogicAction Class works.
</li>

Building and Testing the Example 

To build and deploy the application go to Struts\Strutstutorial directory and type ant on the command prompt. This will deploy the application. Open the browser and navigate to the InputLogic.jsp page. Your browser displays the following  page. 3

Writing  a text string to the InputLogic.jsp page lets you to see the working of  the  present Logic tag <logic:present > and the notPresent Logic tag <logic:notPresent >. 

It displays the following out.jsp page

      4