Friday, January 30, 2015

HOW TO GET DISPLAY TAG CURRENT PAGE NUMBER IN ACTION CLASS

String currentPage = request.getParameter((new ParamEncoder("tableId").encodeParameterName(TableTagParameters.PARAMETER_PAGE)));

session-timeout in web.xml vs setMaxInactiveInterval method


WEB.XML

<session-config>
    <session-timeout>10</session-timeout> 
</session-config>

Info : session timeout configured in web.xml will be applied to whole application's all sessions.
Here session timeout has value in minutes. means all the sessions in the whole application will be terminated if user not performing any action on the respective session for 10mins

JAVA

mySession.setMaxInactiveInterval(10);
Info:
setMaxInactiveInterval() method takes value in seconds.
so here mySession will be terminated after 10sec.



   

Thursday, January 29, 2015

BOOTSTRAP : HOW TO SHOW BOOTSTRAP CONFIRMATION DIALOGUE

JSP 
<html lang="en">

<head>
<script src="${pageContext.request.contextPath}/jquery/jquery.js"></script>
<script src="${pageContext.request.contextPath}/bootstrap/js/bootstrap.js"></script>
<script src="${pageContext.request.contextPath}/bootstrap/js/bootstrap-tooltip.js"></script>

<script src="${pageContext.request.contextPath}/bootstrap/js/bootstrap-confirmation.js"></script>
</head>
<body>

<a class="btn" data-href="/pkg/Pkg/delete?                                             
                    pkgId=${pkgData.id}&pkgName=${pkgData.name}" 
                    data-toggle="confirmation" 
                    data-placement="left" 
                    data-popout="true" 
                    data-singleton="true" 
                    data-original-title="" title="">

<img src="${pageContext.request.contextPath}/images/delete.jpg"  />
</a>
</body>
</html>

JAVA SCRIPT
$(document).ready(function() {

$('[data-toggle="confirmation"]').confirmation({
title : 'Are you sure ?',
animation : true,
popout: true,
btnOkLabel : 'Yes',
btnCancelLabel : 'No',
onConfirm : function() {
},
onCancel : function() {
$('[data-toggle="confirmation"]').confirmation('hide');
}

});
});

Wednesday, January 28, 2015

HOW TO DISPLAY ROW NUMBER IN DISPLAY TAG

<display:table id="pkgData" name="pkgsList" requestURI="/pkg/Pkg/search">

<display:column title="Sr.#" >${pkgData_rowNum}</display:column>

</display:table>

Tuesday, January 27, 2015

STRUTS2 UNKNOWN ACTION HANDLER CLASS (UnknownHandler)

struts.xml

<struts>


<bean type="com.opensymphony.xwork2.UnknownHandler" name="handler" class="com.raj.mv.pd.controller.pkg.UnknownActionController"/>
...
...

</struts>

UNKNOWN ACTION HANDLER

import org.apache.struts2.dispatcher.Dispatcher;

import com.raj.commons.logging.LogManager;
import com.raj.mv.pd.constants.Results;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.Result;
import com.opensymphony.xwork2.UnknownHandler;
import com.opensymphony.xwork2.XWorkException;
import com.opensymphony.xwork2.config.ConfigurationManager;
import com.opensymphony.xwork2.config.RuntimeConfiguration;
import com.opensymphony.xwork2.config.entities.ActionConfig;

public class UnknownActionController implements UnknownHandler{
public static final String MODULE = UnknownActionController.class.getSimpleName();

@Override
public ActionConfig handleUnknownAction(String namespace, String actionName) throws XWorkException {

LogManager.getLogger().debug(MODULE,"Method called handleUnknownAction()");

ConfigurationManager configurationManager = Dispatcher.getInstance().getConfigurationManager();
   RuntimeConfiguration runtimeConfiguration = configurationManager.getConfiguration().getRuntimeConfiguration();
   ActionConfig actionConfig = runtimeConfiguration.getActionConfig(namespace, actionName);
   
   if(actionConfig == null) { // invalid url request, and this need to be handled
       actionConfig = runtimeConfiguration.getActionConfig("", "pkg/Pkg/error");
   }
   return actionConfig;
}

@Override
public Object handleUnknownActionMethod(Object arg0, String arg1) throws NoSuchMethodException {
LogManager.getLogger().debug(MODULE,"Method called handleUnknownActionMethod()");
return Results.EXCEPTION;
}

@Override
public Result handleUnknownResult(ActionContext arg0, String arg1, ActionConfig arg2, String arg3) throws XWorkException {
LogManager.getLogger().debug(MODULE,"Method called handleUnknownResult()");
return null;
}

}

Monday, January 26, 2015

STRUTS2 Display exception detail on the JSP

To Display exception message

<s:label label="Exception :" value='%{exception}' />

To Display exception stack stack

<s:label label="Exception :" value='%{exceptionStack}' />

Wednesday, January 21, 2015

STRUTS2 AJAX AND JSON BASED VALIDATION

struts.xml

<package name="validationPkg" namespace="/validate" extends="json-default">

<interceptors>
<interceptor name="transaction" class="com.raj.controller.interceptor.TransactionInterceptor" />
</interceptors>

<action name="*/*/*" class="com.raj.controller.{1}.{2}CTRL" method="{3}">
<interceptor-ref name="basicStack"></interceptor-ref>
<interceptor-ref name="transaction"/>
<result type="json">
<param name="root">validationMessage</param>
</result>
</action>

</package>

Action Class

package com.raj.controller.pkg;

public class PkgCTRL extends ActionSupport {

private ValidationMessage validationMessage =  new ValidationMessage();

public ValidationMessage getValidationMessage() {
return validationMessage;
}

public void setValidationMessage(ValidationMessage validationMessage) {
this.validationMessage = validationMessage;
}

public String doValidation(){
LogManager.getLogger().debug(MODULE,"Method called doValidation()");

PkgData pkgData = PkgDAO.getPkgByName(packageName);
getValidationMessage().setMessageCode(ValidationMessage.ERROR);
if( packageName == null || packageName.trim().length() == 0 ){ 
getValidationMessage().setMessage(getText("empty.name"));

}else if( packageName.matches(getText("name.validation.regex")) ){ 
if( pkgData != null ){
getValidationMessage().setMessage(getText("name.already.exist"));
}else{
getValidationMessage().setMessage("Valid Name");
getValidationMessage().setMessageCode(ValidationMessage.SUCCESS);
}
        }else{        
        getValidationMessage().setMessage(getText("invalid.name"));
        }
  return Results.SUCCESS;
}
}

POJO CLASS

public class ValidationMessage {

public final static  short  SUCCESS = 1;
public final static  short  ERROR = 0;

private String message;
private short messageCode;

public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public int getMessageCode() {
return messageCode;
}
public void setMessageCode(short messageCode) {
this.messageCode = messageCode;
}

}

KEY ENUM


public enum ValidationKeys {

EMPTY_NAME("empty.name"),
NAME_VALIDATION_REGEX("name.validation.regex"),
NAME_ALREADY_EXIST("name.already.exist"),
INVALID_NAME("invalid.name"),
VALID_NAME("valid.name"),;

public String key;
ValidationKeys(String key){
this.key =  key;
}

}

ApplicationResources_en.properties

#Ajax validation messages
invalid.name = Invalid Name (Only alphanumeric Allowed)
empty.name = Empty Name
name.already.exist = Name already exist

name.validation.regex = ^[a-zA-Z0-9]*$

Validation Js file

/* 
 verifyUniqueness() require two arguments 'fieldId' and 'actionName', it makes an AJAX call to the 
 passed action's validation method and it return the appropriate result message.
 Invalid fielId message will be displayed in red color and valid fielId message will be displayed in green color. 
 Here 'actionName' value will be like '/validate/pkg/Pkg/validation'
 in this action value '/validate' is the namespace value in struts.xml file and remaining value will be mapped dynamically to the respective 
 action's method through wildcard used in the struts.xml file.  
 */
function verifyUniqueness(fieldId,actionName){    
 var pkgNameVal = $("#"+fieldId).val();
 clearErrorMessages(null);
 $.ajax({
   type: "POST",
   url: contextPath+actionName,
   data: {packageName:pkgNameVal},    
   success: function(data){                    
    if(data.messageCode == "1"){
    // success code logic
    }else{
                               // error code logic
    }
    callback(data);
   },
   error: function(data){
    console.log(data);
   }
});
}

function callback(data){
 console.log(data);

}

JSP FILE FIELD

<s:textfield name="pkgData.name" key="getText('pkg.name')" id="pkgName" cssClass="form-control" onblur="verifyUniqueness('pkgName','/validate/pkg/Pkg/doValidation');"  />


Scrum and Scrum master

Scrum  Scrum is a framework which helps a team to work together.  It is like a rugby team (the scrum name comes from rugby game). Scrum enco...