Link to home
Start Free TrialLog in
Avatar of narrav
narrav

asked on

WEBLOGIC STRUTS JAVA/JSP ERROR URGENT HELP PLS

Hi all,

I am sorry I am new to java/jsp/weblogic/struts. just learning as well as trying to resolve some of issues here pls..

We have an application running on weblogic 6.1

while trying to migrate on weblogic 8.1, i copied over a war file. It is on SUN 5.8.

One of my app module is not working and throwing error as below:
<BEA-101017> <[ServletContext(id=27748407,name=isoft,context-path=/isoft/iSoft)] Root cause of ServletException.
javax.servlet.jsp.JspException: (class: jsp_servlet/_jsp/_invoices/__editinvoicedetails, method: _jspService signature: (Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V) Illegal target of jump or branch
        at org.apache.struts.taglib.template.InsertTag.doEndTag(InsertTag.java:164)
        at jsp_servlet._jsp.__modinvoice._jspService(__modinvoice.java:247)
        at weblogic.servlet.jsp.JspBase.service(JspBase.java:33)
        at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:996)
        at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:419)
        at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:315)
        at weblogic.servlet.internal.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:312)
        at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1069)
        at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:455)
        at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279)
        at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
        at com.citi.soft.struts.action.servlet.iSoftActionServlet.process(Unknown Source)
        at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
        at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:996)
        at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:419)
        at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:315)
        at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6452)
        at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
        at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
        at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3661)
        at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2630)
        at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
        at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)


any ideas pls?
Avatar of kiranhk
kiranhk

This seems to be the problem of code generated if there is lots of tag in your jsp page.

The problem is that there is a limit on the size of a compiled method in a
Java class file, and that limit is what we're running up against. Recall
that a JSP page is compiled into a servlet, and into essentially only one
method in that servlet. Hence, if your page contains many, many tags, that
method becomes too big, and up comes the exception that you're seeing.


http://www.mail-archive.com/struts-user@jakarta.apache.org/msg04902.html


https://www.experts-exchange.com/questions/21181460/STRUTS-Branch-is-too-large-Internal-restriction.html
I assume you have a JSP called modinvoice?   Find the .java file generated by it and post line 247 of *modinvoice.java  (ends with modinvoice.java).  If you can figure out the corresponding line in the JSP file (usually weblogic displays that in the browser for you) then post that too.
Avatar of narrav

ASKER

I could not fine file ending with modinvoice.java .. any ideas where could it be?

kiran -- understood the cause.. what can be the solution..

according to website u gave, they say splitting the jsp -- but i don't want to do that because this jsp is working fine in WEBLOGIC 6.1.. some setting has been done my sys admin in my company on sun 5.8/weblogic 6.1 JVM, so that it works fine on 6.1

But sys admin has to let go, and everybody in company has to let go as compnay was loosing business.. now we are migrating app to weblogic 8.1 and trying to sell to client, and we will hire experts to handle this..

but to gain this project, we have to prepare prrof of concept on 8.1 which is what i am tryign to do

i don't want to change jsp since same jsp works in 6.1 env.

there might be some settikng we can do to make it work
can you try this out also.
petmagdy has suggested this, can you try this out

https://www.experts-exchange.com/questions/21181460/STRUTS-Branch-is-too-large-Internal-restriction.html
Avatar of narrav

ASKER

Do you know where to add this parameter in weblogic:

java -Dcom.sun.tools.javac.main.largebranch=true


Does petmagdy mean in startWebLogic.sh script??

yes...

In your startWeblogic.sh check for this line and add

%JAVA_HOME%\bin\java %JAVA_VM% %MEM_ARGS% %JAVA_OPTIONS% -Dweblogic.Name=%SERVER_NAME% -Dweblogic.ProductionModeEnabled=%PRODUCTION_MODE% -Djava.security.policy="%WL_HOME%\server\lib\weblogic.policy" -Dcom.sun.tools.javac.main.largebranch=true  weblogic.Server
Avatar of narrav

ASKER

Kiran,

I could not try this until now since start-up script is not controlled by me. it is not easy for me to change start-up script due to group politics.

all they give me is a shell script which they can invoke in their start-up script to build any additional classpath..

any ideas if i can somehow do this in this shell script?
what are you doing in your Shell script.
this line needs to be added when u r calling java.exe

-Dcom.sun.tools.javac.main.largebranch=true
Avatar of narrav

ASKER

below is shell script:

#!/bin/shib
#ident      "%W%"



APPLDIR=/export/enterprise-docs
export APPLDIR
APPSHORTNAME=isoft
export APPSHORTNAME
DOCROOT=$APPLDIR/$APPSHORTNAME
export DOCROOT
WL_DOCROOT=$DOCROOT/weblogic
export WL_DOCROOT
WL_LIB=$WL_DOCROOT/lib
export WL_LIB


###########################################################################
# If you have some shell scripts/binaries in "etc" or in "bin" directory
# uncomment these lines and modify the PATH to include these directories
###########################################################################
# PATH=<your path>:$PATH
# export PATH

###########################################################################
# If you have some *.so files in your "lib" directory
# uncomment these lines and modify the LD_LIBRARY_PATH to include the lib directory
###########################################################################
# LD_LIBRARY_PATH=<your ld lib path>:$LD_LIBRARY_PATH:

LD_LIBRARY_PATH=$WL_LIB:$LD_LIBRARY_PATH:
export LD_LIBRARY_PATH

#################################################################
# If you have archived java class files in your "lib" directory
# that you want to prepend to the CLASSPATH
# uncomment these lines and modify the PRECLASSPATH to include their names
#################################################################


# WST VERSION
# use our version of jconnect since it's also included with weblogic.
# all jce jars must be included here or they won't work - not sure why??
PRECLASSPATH=$WL_DOCROOT/user_projects:$WL_DOCROOT/config:$WL_LIB/jconn2.jar:$WL_LIB/US_export_policy.jar:$WL_LIB/jce1_2_2.jar:$WL_LIB/sunjce_provider.jar:$WL_LIB/local_policy.jar:$WL_LIB/eaeUtil.jar:$WL_LIB/jcert.jar

# NON-WST VERSION
# PRECLASSPATH=$ROOT/config/weblogicDomain/config

export PRECLASSPATH


#################################################################
# If you have archived java class files in your "lib" directory
# that you want to append to the  CLASSPATH
# uncomment these lines and modify the POSTCLASSPATH to include their names
#################################################################

#POSTCLASSPATH=
POSTCLASSPATH=$WL_LIB/isoft-actuate.jar:$WL_LIB/log4j-1.2.8.jar:$WL_LIB/isoft-util.jar:$WL_LIB/isoft-common.jar:$WL_LIB/isoft-exception.jar:$WL_LIB/isoft-startup.jar:$WL_LIB/isoft-classes.jar:$WL_LIB/xalan.jar:$WL_LIB/commons-beanutils.jar:$WL_LIB/commons-logging.jar:$WL_LIB/commons-collections.jar:$WL_LIB/jsse.jar:$WL_LIB/jnet.jar:$WL_LIB/activation.jar:$WL_LIB/mail.jar:$WL_LIB/mailapi.jar:$WL_LIB/smtp.jar:$WL_LIB/poi.jar:$WL_LIB/jaxrpc.jar:$WL_LIB/axis.jar:$WL_LIB/commons-discovery.jar:$WL_LIB/saaj.jar:$WL_LIB/commons-net-1.0.0.jar

export POSTCLASSPATH
JAVA_HOME=$WL_LIB/1.4.2_06
Avatar of narrav

ASKER

any ideas if I can put it here?
no, this is just setting your path and classpath env variables. as i told before that line needs to be set for the JVM which is started using java.exe
so i suggest u better ask the admin guys to add that in the startWeblogic.sh and check it.
Avatar of narrav

ASKER

Kiran,

But if you look inside the start-up script:

senEnv.sh (shell script which we control), is called before they start JVM. And since this is USERSYSTEMPARAMETER (FOR LONG BRANCH),
DON'T You think we can set-up something in setEnv.sh so that they pick it up.. Just a thought.. Sorry I don't know much and due to politics here,
I want to make this a last option to change the start-up script because if they give me a solution that I can do it in setEnv.sh also,
it will be kind of big thing in my group.. so just want to make sure...

# figure out the app short name
appShortName=`echo $DOMAIN_NAME | awk '{ print( substr($1, 1, length($1) - 6)) }'`

# source env variables from the application etc and domain/etc
if [ -f $APPLDIR/$appShortName/weblogic/etc/setEnv.sh ]
then
    . $APPLDIR/$appShortName/weblogic/etc/setEnv.sh
fi

# set up common environment
# Set Production Mode.  When this is set to true, the server starts up in
# production mode.  When set to false, the server starts up in development
# mode.  If it is not set, it will default to false.
PRODUCTION_MODE=true

# Set JAVA_VENDOR to java virtual machine you want to run on server side.
JAVA_VENDOR="Sun"

LOGFILE=$DOMAIN_HOME/$DOMAIN_NAME/logs/$SERVER_NAME.appl.log.`date '+%y%m%d%H%M'`

# figure out the app short name
appShortName=`echo $DOMAIN_NAME | awk '{ print( substr($1, 1, length($1) - 6)) }'`

# copy the appropriate config.xml into the domain
if [ $defaultConfig"XYZ" != "defaultXYZ" ]
then
    whichEnv=`hostname | awk '{ print( substr($1, length($1), 1)) }'`

    if [ $whichEnv = "s" ]; then
        if [ -f $APPLDIR/$appShortName/weblogic/user_projects/stg/config.xml ]; then
            /usr/bin/cp -p $APPLDIR/$appShortName/weblogic/user_projects/stg/config.xml $DOMAIN_HOME/$DOMAIN_NAME
        else
            echo "$APPLDIR/$appShortName/weblogic/user_projects/stg/config.xml does not exist"
            exit 1
        fi
    elif [ $whichEnv = "p" ] || [ $whichEnv = "c" ]; then
        if [ -f $APPLDIR/$appShortName/weblogic/user_projects/prd/config.xml ]; then
            /usr/bin/cp -p $APPLDIR/$appShortName/weblogic/user_projects/prd/config.xml $DOMAIN_HOME/$DOMAIN_NAME
        else
            echo "$APPLDIR/$appShortName/weblogic/user_projects/prd/config.xml does not exist"
            exit 1
        fi
    elif [ $whichEnv = "r" ]; then
        if [ -f $APPLDIR/$appShortName/weblogic/user_projects/dr/config.xml ]; then
            /usr/bin/cp -p $APPLDIR/$appShortName/weblogic/user_projects/dr/config.xml $DOMAIN_HOME/$DOMAIN_NAME
        else
            echo "$APPLDIR/$appShortName/weblogic/user_projects/dr/config.xml does not exist"
            exit 1
        fi
    fi
fi


# Set JAVA_VM to java virtual machine you want to run on server side.
# JAVA_VM=""

# Set JAVA_OPTIONS to the java flags you want to pass to the vm.  If there
# are more than one, include quotes around them.  For instance:
# JAVA_OPTIONS="-Dweblogic.attribute=value -Djava.attribute=value"

# Reset number of open file descriptors in the current process
# This function is defined in commEnv.sh
resetFd

# Start WebLogic server
CLASSPATH="${WEBLOGIC_CLASSPATH}${CLASSPATHSEP}${JAVA_HOME}/jre/lib/rt.jar${CLASSPATHSEP}${WL_HOME}/server/lib/webservices.jar
${CLASSPATHSEP}${CLASSPATH}"

CLASSPATH=$PRECLASSPATH:$CLASSPATH:$POSTCLASSPATH

export CLASSPATH

cd ${DOMAIN_HOME}/${DOMAIN_NAME}

# Start WebLogic server
echo CLASSPATH="${CLASSPATH}"
echo
echo PATH="${PATH}"

if [ "X"$I3_ENABLED = "Xtrue" -o "X"$WLS_START_I3_ENABLED = "Xtrue" ]
then
    echo "******************************************************************"
    echo "Starting managed server using VERITAS INDEPTH monitoring"
    echo "If you intended to start normally, without monitoring "
    echo "please restart with I3_ENABLED=false"
    echo "******************************************************************"

INDEPTH_JVMID=$SERVER_NAME
export INDEPTH_JVMID

$I3_START "$JAVA_HOME/bin/java" ${JAVA_VM} ${MEM_ARGS} ${JAVA_OPTIONS} ${USERSYSTEMPARAMETER} -Dweblogic.ListenPort=$PORT_NUM
-Dweblogic.Domain=$DOMAIN_NAME -Dweblogic.Name=$SERVER_NAME -Dweblogic.ProductionModeEnabled=${PRODUCTION_MODE} -Djava.securit
y.policy="$DOMAIN_HOME/$DOMAIN_NAME/weblogic.policy" -Dbea.home=$LICENSE_HOME -Dwls.home=$WL_HOME weblogic.Server >> $LOGFILE
2>&1
else
"$JAVA_HOME/bin/java" ${JAVA_VM} ${MEM_ARGS} ${JAVA_OPTIONS} ${USERSYSTEMPARAMETER} -Dweblogic.ListenPort=$PORT_NUM -Dweblogic
.Domain=$DOMAIN_NAME -Dweblogic.Name=$SERVER_NAME -Dweblogic.ProductionModeEnabled=${PRODUCTION_MODE} -Djava.security.policy="
$DOMAIN_HOME/$DOMAIN_NAME/weblogic.policy" -Dbea.home=$LICENSE_HOME -Dwls.home=$WL_HOME weblogic.Server > $LOGFILE 2>&1
fi
echo "WebLogic server is exited"

ok, add this in your setEnv after this line

# Set JAVA_OPTIONS to the java flags you want to pass to the vm.  If there
# are more than one, include quotes around them.  For instance:
# JAVA_OPTIONS="-Dweblogic.attribute=value -Djava.attribute=value"


*****************
JAVA_OPTIONS="-Dcom.sun.tools.javac.main.largebranch=true"


try it out, it may work. i havent tried this before, but it looks like its the same as setting it in startWeblogic script

Good Luck

Avatar of narrav

ASKER

Kiran,

There is no line like  

Set JAVA_OPTIONS to the java flags you want to pass to the vm.  If there
# are more than one, include quotes around them.  For instance:
# JAVA_OPTIONS="-Dweblogic.attribute=value -Djava.attribute=value"

in setEnv.sh ..This line is in start-up WL script..

But I have put
JAVA_OPTIONS="-Dcom.sun.tools.javac.main.largebranch=true"

in setEnv.sh

after line

JAVA_HOME=$WL_LIB/1.4.2_06

(in the end)..

anything i did wrong or something different i need to do?

how should i make sure it picked up ?
but that is the above post what u have is from your setEnv.sh right?? and it has that line which i posted.
anyway its ok, it just need to be passed as a param while starting the JVM.

>>>>>how should i make sure it picked up ?
Just access your application which was throwing the error, then u will know!!!!!!
Avatar of narrav

ASKER

I posted you 2 scripts -- firstone was setEnv.sh
second one was start-up WL SCRIPT - calling setEnv.sh

IT IS STILL throwing an error -- same error.. any other ideas on how I can put in setEnv.sh

below is my setEnv.sh currently

#!/bin/sh
#ident  "%W%"


###########################################################################
#
# The developers can modify these variables to include directories and files
# needed by their applications. The developers should copy this file
# into their application source tree, as part of their installed tree, and
# part of their XENV/HERMES build.
#
# However the developers have no control on these settings ( controlled by WebBank):
# - JDK
# - WebLogic Server
#
# The start script for WebLogic Server will source this application specific environment file,
# then source the domain specific environment file where the developers can view but can not
# modify.
#
###########################################################################

APPLDIR=/export/enterprise-docs
export APPLDIR
APPSHORTNAME=isoft
export APPSHORTNAME
DOCROOT=$APPLDIR/$APPSHORTNAME
export DOCROOT
WL_DOCROOT=$DOCROOT/weblogic
export WL_DOCROOT
WL_LIB=$WL_DOCROOT/lib
export WL_LIB


###########################################################################
# If you have some shell scripts/binaries in "etc" or in "bin" directory
# uncomment these lines and modify the PATH to include these directories
###########################################################################
# PATH=<your path>:$PATH
# export PATH

###########################################################################
# If you have some *.so files in your "lib" directory
# uncomment these lines and modify the LD_LIBRARY_PATH to include the lib directory
###########################################################################
# LD_LIBRARY_PATH=<your ld lib path>:$LD_LIBRARY_PATH:

LD_LIBRARY_PATH=$WL_LIB:$LD_LIBRARY_PATH:
export LD_LIBRARY_PATH

#################################################################
# If you have archived java class files in your "lib" directory
# that you want to prepend to the CLASSPATH
# uncomment these lines and modify the PRECLASSPATH to include their names
#################################################################


# WST VERSION
# use our version of jconnect since it's also included with weblogic.
# all jce jars must be included here or they won't work - not sure why??
PRECLASSPATH=$WL_DOCROOT/user_projects:$WL_DOCROOT/config:$WL_LIB/jconn2.jar:$WL_LIB/US_export_policy.jar:$WL_LIB/jce1_2_2.jar
:$WL_LIB/sunjce_provider.jar:$WL_LIB/local_policy.jar:$WL_LIB/eaeUtil.jar:$WL_LIB/jcert.jar

# NON-WST VERSION
# PRECLASSPATH=$ROOT/config/weblogicDomain/config

export PRECLASSPATH


#################################################################
# If you have archived java class files in your "lib" directory
# that you want to append to the  CLASSPATH
# uncomment these lines and modify the POSTCLASSPATH to include their names
#################################################################

#POSTCLASSPATH=
POSTCLASSPATH=$WL_LIB/isoft-actuate.jar:$WL_LIB/log4j-1.2.8.jar:$WL_LIB/isoft-util.jar:$WL_LIB/isoft-common.jar:$WL_LIB/isoft-
exception.jar:$WL_LIB/isoft-startup.jar:$WL_LIB/isoft-classes.jar:$WL_LIB/xalan.jar:$WL_LIB/commons-beanutils.jar:$WL_LIB/comm
ons-logging.jar:$WL_LIB/commons-collections.jar:$WL_LIB/jsse.jar:$WL_LIB/jnet.jar:$WL_LIB/activation.jar:$WL_LIB/mail.jar:$WL_
LIB/mailapi.jar:$WL_LIB/smtp.jar:$WL_LIB/poi.jar:$WL_LIB/jaxrpc.jar:$WL_LIB/axis.jar:$WL_LIB/commons-discovery.jar:$WL_LIB/saa
j.jar:$WL_LIB/commons-net-1.0.0.jar

export POSTCLASSPATH
JAVA_HOME=$WL_LIB/1.4.2_06
JAVA_OPTIONS="-Dcom.sun.tools.javac.main.largebranch=true"

Avatar of narrav

ASKER

Kiran,

This parameter
"-Dcom.sun.tools.javac.main.largebranch=true" is an argument as a USERSYSTEMPARAMETER right???

so cannot we set USERSYSTEMPARAMETER in setEnv.sh thus it is picked up?

I am sorry if I am misunderstanding it
yes, you need to do that
Avatar of narrav

ASKER

how?

just do in setEnv.sh

USERSYSTEMPARAMETER= "-Dcom.sun.tools.javac.main.largebranch=true"

??
add this in setEnv.sh and try .

JAVA_OPTIONS="-Dcom.sun.tools.javac.main.largebranch=true"
export JAVA_OPTIONS


if still doesnt work then try the USERSYSTEMPARAMETER
Avatar of narrav

ASKER

I tried putting in my setEnv.sh

JAVA_OPTIONS="-Dcom.sun.tools.javac.main.largebranch=true"
export JAVA_OPTIONS
USERSYSTEMPARAMETER=="-Dcom.sun.tools.javac.main.largebranch=true"
export USERSYSTEMPARAMETER

I thought I will just put it together just to make it work.. it doesn't matter right now what excatly is making it work..

but same problem..

any other ideas?

only this should have done the job

JAVA_OPTIONS="-Dcom.sun.tools.javac.main.largebranch=true"
export JAVA_OPTIONS

but if that doesnt work i am not sure what will????

Avatar of narrav

ASKER

Kiran,

Looked like this option was picked up  when I tried USERSYSTEMPARAMETER.

tHE WAY i KNOW is by looking at logs it says:

<main> <<WLS Kernel>> <> <BEA-141187> <Java system properties are defined as fo
llows:
bea.home = /export/enterprise-docs/weblogic/8.1/user_projects/../license
com.sun.tools.javac.main.largebranch = true
file.encoding = ISO646-US
file.encoding.pkg = sun.io
file.separator = /
java.awt.graphicsenv = sun.awt.X11GraphicsEnvironment
java.awt.printerjob = sun.print.PSPrinterJob


So i guess this is correct.

But this doesn't resolve the issue though.

I am still getting same error.

I am on SOLARIS 5.8 if it helps..

any help??
Avatar of narrav

ASKER

I don't know but  whiel looking on internet this is what I got ..

We added the option to the JVM 'com.sun.tools.javac.main.largebranch'
and set it tu 'true'.

It solves the problem on windows but not on Solaris, where the crash
occurs.
The parameter seems no tot be supported by the jvm of websphere on
Solaris.

Has anyone already solved the management of big jsp without the parameter ?
Thanks.

But there is no answer to this..

any ideas ??
Avatar of narrav

ASKER

finally i got to modInvoice.java and here are few lines of it..

Line 247 is as below:
if (_template_insert0.doEndTag() == Tag.SKIP_PAGE) { _activeTag = null; _releaseTags(_template_insert0); return; } //[ /
jsp/ModInvoice.jsp; Line: 8]



==========================================================================
 _activeTag = _template_put1.getParent(); _template_put1.release(); //[ /jsp/ModInvoice.jsp; Line: 7]
          //end put custom tag.... //[ /jsp/ModInvoice.jsp; Line: 7]
          /*** sync AT_BEGIN TagExtra Vars here ***/ //[ /jsp/ModInvoice.jsp; Line: 7]
          /*** declare & sync AT_END TagExtra Vars here ***/ //[ /jsp/ModInvoice.jsp; Line: 7]
          _writeText(response, out, _wl_block6, _wl_block6Bytes);
          //^%$__TAG_CODEGEN  //[ /jsp/ModInvoice.jsp; Line: 8]
        } while (_template_insert0.doAfterBody() == IterationTag.EVAL_BODY_AGAIN); //[ /jsp/ModInvoice.jsp; Line: 8]
      } // end !SKIP_BODY //[ /jsp/ModInvoice.jsp; Line: 8]
      if (_template_insert0.doEndTag() == Tag.SKIP_PAGE) { _activeTag = null; _releaseTags(_template_insert0); return; } //[ /
jsp/ModInvoice.jsp; Line: 8]
      _activeTag = _template_insert0.getParent(); _template_insert0.release(); //[ /jsp/ModInvoice.jsp; Line: 8]
      //end insert custom tag.... //[ /jsp/ModInvoice.jsp; Line: 8]
      /*** sync AT_BEGIN TagExtra Vars here ***/ //[ /jsp/ModInvoice.jsp; Line: 8]
      /*** declare & sync AT_END TagExtra Vars here ***/ //[ /jsp/ModInvoice.jsp; Line: 8]
    } catch (Throwable __ee) {
      while (out != null && out != _originalOut) out = pageContext.popBody();
      _releaseTags(_activeTag);
      ((weblogic.servlet.jsp.PageContextImpl)pageContext).handlePageException((Throwable)__ee);
    }


    //before final close brace...



Does it help anything to resolve the issue? greensunie ?? Kiran??
Not much. As i said before this happens when there are too many tags in the JSP and the compiler generates a method which is very big with all the Custom tag code. so if your JVM options setting is not working the you would be better off changing the .jsp file a little bit  so that it will lessen the code generated.

Can you post that ModInvoice.jsp ?? that would help
Avatar of narrav

ASKER

ModInvoice.jsp

<%@ taglib uri='template.tld' prefix='template' %>
<template:insert template='/jsp/templates/gbl.jsp'>
<template:put name='title' content='&nbsp;&nbsp;Invoice Details&nbsp;&nbsp;' direct="true" />
<template:put name='top' content='/jsp/html/header.htm' />
<template:put name='subtoolbar' content='/jsp/invoices/toolbar_in.jsp' />
<template:put name='middle' content='/jsp/invoices/editInvoiceDetails.jsp' />
<template:put name='footer' content='/jsp/html/footer.htm'/>
</template:insert>


and actually I guess you want to look at
editInvoiceDetails.jsp
which is really big as below:

<%@ page import="com.citi.soft.invoice.InvoiceDetails,com.citi.soft.util.string.StringUtil,com.citi.soft.vendor.Currency,com.citi.soft.web.WebKeys" %>

<%@ taglib uri="struts/html" prefix ="html" %>
<%@ taglib uri="struts/logic" prefix="logic" %>
<%@ taglib uri="struts/bean" prefix="bean" %>
<%@ taglib uri='jstl/c' prefix='c' %>
<%@ taglib uri='jstl/fmt' prefix='fmt' %>

<SCRIPT language="javascript1.2"  src="/docs/js/popcalendar.js"></SCRIPT>
<SCRIPT language="javascript1.2"  src="/docs/js/dateCheck.js"></SCRIPT>

<logic:messagesPresent message="true" >
   <hr>
    <span id="errorsHeader"><bean:message key="errors.validation.header"/></span>
    <html:messages id="message" message="true">
      <span id="errorsHeader"><li><bean:write name="message"/></li></span>
    </html:messages>
   <hr>
</logic:messagesPresent>

<%

// Populate the Child records

 int lenOfChild = 100 ;
 int actualLenOfChild = 0;

 String[] fromService = new String[lenOfChild];
 String[] toService   = new String[lenOfChild];
 String[] serviceDet  = new String[lenOfChild];
 String[] unitCost    = new String[lenOfChild];
 String[] qnty             = new String[lenOfChild];
 String[] unitTotal   = new String[lenOfChild];



 for (int i = 0 ; i < lenOfChild ; i++) {
      fromService[i] = "";
      toService[i] = "";
      serviceDet[i] = "";
      unitCost[i] = "";
      qnty[i] = "";
      unitTotal[i] = "";
 }

 com.citi.soft.invoice.InvoiceDetails[] m_invoiceDets = (com.citi.soft.invoice.InvoiceDetails[]) request.getAttribute("InvDetails");

 com.citi.soft.invoice.InvoiceDetails m_invoiceDet = null;

 int sizeOfRecs = 0 ;
  for ( sizeOfRecs = 0 ; sizeOfRecs < m_invoiceDets.length ; sizeOfRecs ++){

      m_invoiceDet = new com.citi.soft.invoice.InvoiceDetails();
      m_invoiceDet = m_invoiceDets[ sizeOfRecs ];

      fromService[sizeOfRecs ] = m_invoiceDet.getServiceFromDt() + "";
      toService[sizeOfRecs ] = m_invoiceDet.getServiceToDt()+ "";
      serviceDet[sizeOfRecs ] = m_invoiceDet.getInvDesc();
      unitCost[sizeOfRecs ] = StringUtil.formatNum( m_invoiceDet.getInvPrice()) ;
      qnty[sizeOfRecs ] = new Long(m_invoiceDet.getInvQty()).toString() ;
      unitTotal[sizeOfRecs ] = StringUtil.formatNum(m_invoiceDet.getUnitTotal()) ;

  }

 int displayChildRecs = 0 ;
 if (sizeOfRecs == 0) displayChildRecs = 1 ;
 if (sizeOfRecs == 0) sizeOfRecs = 1 ;

 int m_intChildRowNum = 0;

%>

  <bean:define id="apValue" name="editInvoiceForm" property="apLocId"  />
  <bean:define id="invValue" name="editInvoiceForm" property="invStatus"  />
  <bean:define id="payValue" name="editInvoiceForm" property="status"  />
  <bean:define id="ccyValue" name="editInvoiceForm" property="ccy"  />
      
  <!-- Set values for view screen for select items -->
  <%
      // to compare the value
     String apLocValue = pageContext.findAttribute("apValue").toString() ;
     String invStatusValue = ( pageContext.findAttribute("invValue").toString()).trim() ;
     String payStatusValue = ( pageContext.findAttribute("payValue").toString()).trim() ;
     String curValue = ( pageContext.findAttribute("ccyValue").toString()).trim() ;

     long actvyValue = new Long( (String)request.getAttribute("actvyDt")).longValue() ;

       String url = "";
  %>

<logic:equal name="editInvoiceForm" property="actionType" value="VIEW" ><%  url = "/invoice/viewInvoice" ; %>
</logic:equal>
<logic:equal name="editInvoiceForm" property="actionType" value="EDIT" ><%  url = "/invoice/updateInvoice" ; %>      
</logic:equal>

<html:form action="<%= url%>" >

<logic:equal name="editInvoiceForm" property="actionType" value="VIEW" >
 <html:img width="5" src="/docs/images/spacer.gif"/><span class="redbold"> View Invoice</span> <br><br>
<!-- In View Mode -->
<table cellpadding="0" cellspacing="0" border="0" width="853">
 <tr align="right"><td colspan="4" align="right">
 <a href="javascript:MM_openBrWindow('/isoft/iSoft/invoice/uploadInvoiceDocs.do?methodToCall=viewDocs&Id=<bean:write name="editInvoiceForm" property="invSeqId" />','','scrollbars=no,width=700,height=500&Id=')" style="text-decoration:none"><font size="2">[ Uploaded Documents ]</font></a></td></tr>
  <tr valign=TOP><td>
      <table width="100%" class="tabTable" cellpadding="2"  border="0" >
        <tr><td colspan="4" class="tabtitle" height="13">Invoice Details</td></tr>
        <tr><td width="17%"></td></tr>
        <tr><td width="20%" class="right" height="0"><bean:message key="invoiceForm.ccNum.displayName"/></td>
              <td width="27%" class="left" height="0"><bean:write name="editInvoiceForm" property="ccNum" /></td>
            <td width="23%"  class="right" height="0"> <bean:message key="invoiceForm.vendorAPName.displayName"/></td>
            <td width="30%" height="0" class="left" nowrap="true">
                  <bean:write name="editInvoiceForm" property="vendorAPName" /></td></tr>
        <tr><td width="20%"  class="right" ><bean:message key="invoiceForm.ccMNC.displayName"/></td>
          <td width="27%"  class="left" >
            <a href="/isoft/iSoft/client/ClientBalanceAction.do?keyId=<bean:write name='editInvoiceForm' property='ccNum' />&CCMNC=<bean:write name='editInvoiceForm' property='ccMNC' />" ><bean:write name="editInvoiceForm" property="ccMNC" /></a></td>
          <td width="23%" class="right" height="0"><bean:message key="invoiceForm.vendorId.displayName"/></td>
          <td width="30%" height="0" class="left"><bean:write name="editInvoiceForm" property="vendorId" /></td>
        </tr>
        <tr><td width="20%"  class="right" ><bean:message key="invoiceForm.ccName.displayName"/></td>
          <td width="27%"  class="left" ><bean:write name="editInvoiceForm" property="ccName" /></td>
          <td width="23%" class="right"><bean:message key="invoiceForm.vendorApNum.displayName"/></td>
          <td width="30%" class="left" >
                  <a href="/isoft/iSoft/VendorAction.do?act=VIEW&VENDID=<bean:write name='editInvoiceForm' property='vendorId' />" ><bean:write name="editInvoiceForm" property="vendorAccNum" /></a></td></tr>
        <tr><td width="20%"  class="right" ><bean:message key="invoiceForm.dealMNC.displayName"/></td>
          <td width="27%"  class="left" >
              <a href="/isoft/iSoft/getbalance.do?display=REP&dealMnc=<bean:write name='editInvoiceForm' property='dealMNC' />" ><bean:write name="editInvoiceForm" property="dealMNC" /></a></td>
          <td width="23%" class="right"><bean:message key="invoiceForm.vendorSiteCode.displayName"/></td>
          <td width="30%" class="left"><bean:write name="editInvoiceForm" property="vendorSiteC" /></td></tr>
        <tr><td width="20%"  class="right" ><bean:message key="invoiceForm.dealN.displayName"/></td>
          <td width="27%"  class="left" ><c:out value="${editInvoiceForm.map.dealN}" /></td>
          <td width="23%" class="right"><bean:message key="invoiceForm.entryDt.displayName"/></td>
          <td width="30%" class="left">
            <bean:write name="editInvoiceForm" property="entryDt" />
                  <html:hidden property="entryDt" />
          </td>
          </tr>
        <tr><td width="20%" class="right"><bean:message key="invoiceForm.planType.displayName"/>
          <td width="27%" height="0" class="left"><bean:write name="editInvoiceForm" property="planType" /></td>
          <td width="23%" class="right"><bean:message key="invoiceForm.vendorAccNum.displayName"/></td>
          <td width="30%" class="left"><bean:write name="editInvoiceForm" property="vendorAccountNo" /></td></tr>
        <tr><td width="20%" class="right"><bean:message key="invoiceForm.invId.displayName"/></td>
          <td width="27%" class="left" ><bean:write name="editInvoiceForm" property="invId" /></td>
          <td width="23%" class="right" > <bean:message key="invoiceForm.apRefId.displayName"/></td>
          <td width="30%" class="left">
              <logic:greaterThan name="editInvoiceForm" property="apRefId" value="0" >
                              <bean:write name="editInvoiceForm" property="apRefId" />
                        </logic:greaterThan>
          </td>

            </tr>
        <tr>
          <td width="20%" class="right"><bean:message key="invoiceForm.dueDt.displayName"/></td>
          <td width="27%" class="left" >
                    <logic:greaterThan name="editInvoiceForm" property="dueDt" value="0" >
                          <bean:write name="editInvoiceForm" property="dueDt" />
                    </logic:greaterThan>

          </td>
          <td width="23%" class="right"><bean:message key="invoiceForm.fromDate.displayName"/></td>
          <td width="30%" class="left" nowrap="true" >
                  <c:if test="${editInvoiceForm.map.fromDate > 0 }" ><c:out value="${editInvoiceForm.map.fromDate}" /></c:if>
           
                  <c:if test="${editInvoiceForm.map.toDate > 0 }" ><span class="center"> to</span><c:out value="${editInvoiceForm.map.toDate}" /></c:if>
          </td>

            </tr>
        <tr>
          <td width="20%" class="right"><bean:message key="invoiceForm.invDt.displayName"/></td>
          <td width="27%" class="left" >
            <bean:write name="editInvoiceForm" property="invDt" />
          </td>
          <td class="right" height="18" width="26%"><bean:message key="invoiceForm.apLocId.displayName"/></td>
          <td class="left" height="18" width="30%">
               <bean:write name="editInvoiceForm" property="apLocId" />
          </td>

        </tr>
        <tr>
          <td width="20%" class="right"><bean:message key="invoiceForm.seqNo.displayName"/></td>
          <td width="27%" class="left">
                  <bean:write name="editInvoiceForm" property="invSeqId" />
          </td>
          <!--<td class="right" width="23%"><bean:message key="invoiceForm.forAmt.displayName"/></td>
          <td width="30%" class="left">
              <logic:greaterThan name="editInvoiceForm" value="foreignAmt" value="0" >
                        <fmt:formatNumber value="${editInvoiceForm.map.foreignAmt}" pattern="${usr.appProfile.crcyFormat}" />
              </logic:greaterThan>
          </td> -->
            </tr>

        <tr>
          <td width="20%" class="right"><bean:message key="invoiceForm.chkId.displayName"/></td>
          <td width="27%" class="left">
            <bean:write name="editInvoiceForm" property="checkId" />
          </td>
          <td class="right" width="23%"><bean:message key="invoiceForm.chkDt.displayName"/></td>
          <td width="30%" class="left">
                        <logic:greaterThan name="editInvoiceForm" property="checkDt"  value="0" >
                              <bean:write name="editInvoiceForm" property="checkDt"  />
                        </logic:greaterThan>
          </td>


            </tr>
      <logic:equal name="editInvoiceForm" property="dealType" value="SOFT" >
        <tr>
          <td width="20%" class="right"><bean:message key="invoiceForm.softRatio.displayName"/></td>
          <td width="27%" class="left">
                        <bean:write name="editInvoiceForm" property="softRatio" />
            <logic:equal name="editInvoiceForm" property="isHardCoded" value="on" >
            <span class="bio_regtext"><font color="red">(HardCoded)</font></span>
            </logic:equal>
          </td>
          <td class="right" width="23%"><bean:message key="invoiceForm.softAmt.displayName"/></td>
          <td width="30%" class="left" >
                  <fmt:formatNumber value="${editInvoiceForm.map.softAmt}" pattern="${usr.appProfile.crcyFormat}" />
          </td>
        </tr>
       </logic:equal>
        <tr>
          <td width="20%" class="right"><bean:message key="invoiceForm.apSentDt.displayName"/></td>
          <td width="27%" class="left">
                          <logic:greaterThan name="editInvoiceForm" property="apSentDt"  value="0" >
                                <bean:write name="editInvoiceForm" property="apSentDt"  />
                          </logic:greaterThan>
          </td>
          <td width="23%" class="right"><bean:message key="invoiceForm.effDt.displayName"/></td>
          <td width="30%" class="left">
                        <bean:write name="editInvoiceForm" property="effDt" />
          </td>
        </tr>

        <tr>
              <td class="right" height="18" width="20%"><bean:message key="invoiceForm.invStatus.displayName"/></td>
          <td class="left" height="18" width="27%">
           <logic:iterate id="invSt" name="<%= WebKeys.INV_STATUSES %>" indexId="index" >
                <logic:equal name="invSt" property="statusId" value="<%= invStatusValue %>" >
                       <bean:write name="invSt" property="statusN" />
            </logic:equal>
             </logic:iterate>
                   <c:if test="${editInvoiceForm.map.invStatus == 7 }">
                        <c:if test="${editInvoiceForm.map.appUsrI != ''}">(A)</c:if>
                        <c:if test="${editInvoiceForm.map.appUsrI == '' or  editInvoiceForm.map.appUsrI == null}">(U)</c:if>
                   </c:if>
          </td>

          <td width="23%" class="right"><bean:message key="invoiceForm.status.displayName"/></td>
          <td width="30%" class="left">
           <logic:iterate id="paySt" name="<%= WebKeys.PAY_STATUSES %>" indexId="index" >
                <logic:equal name="paySt" property="statusId" value="<%= payStatusValue %>" >
                 <bean:write name='paySt' property='statusN' />
            </logic:equal>
             </logic:iterate>
          </td>
            </tr>
        <tr>
          <td width="20%" class="right"><bean:message key="invoiceForm.total.displayName"/></td>
          <td width="27%" class="left" >
                  <fmt:formatNumber value="${editInvoiceForm.map.total}" pattern="${usr.appProfile.crcyFormat}"/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
          </td>
          <td class="right" width="23%"><bean:message key="invoiceForm.ccy.displayName"/></td>
          <td width="30%" class="left" >
                 <logic:iterate id="ccyList" name="<%= WebKeys.CURRENCIES %>" indexId="index" >
                <logic:equal name="ccyList" property="code" value="<%= curValue %>" >
                             <bean:write name="ccyList" property="codeDesc" />
                        </logic:equal>
            </logic:iterate>
          </td>
        </tr>
            <tr>
<td width="23%" class="right" nowrap="true" ><bean:message key="invoiceForm.repCcy.displayName"/>&nbsp;(<c:out value="${editInvoiceForm.map.repCcy}" />) :&nbsp; </td>
          <td width="30%" class="left">      <fmt:formatNumber value="${editInvoiceForm.map.repGrossPay}" pattern="${usr.appProfile.crcyFormat}"/> </td>
          <td width="20%" class="right"><bean:message key="invoiceForm.lastActvyDt.displayName"/></td>
          <td width="27%" class="left" >
                  <bean:write name="editInvoiceForm" property="actvyDt" />
          </td>
            </tr>
        <tr>
          <td class="right" width="23%"><bean:message key="invoiceForm.forAmt.displayName"/></td>
          <td width="30%" class="left">
              <logic:greaterThan name="editInvoiceForm" value="foreignAmt" value="0" >
                        <fmt:formatNumber value="${editInvoiceForm.map.foreignAmt}" pattern="${usr.appProfile.crcyFormat}" />
              </logic:greaterThan>
          </td>
          <td class="right" width="23%"><bean:message key="invoiceForm.lastActvyUsrI.displayName"/></td>
          <td width="30%" class="left" >
                        <bean:write name="editInvoiceForm" property="lastActvyUsrI" />
          </td>
        </tr>
        <tr>
          <td width="20%" class="right" height="40"><bean:message key="invoiceForm.comments.displayName"/></td>
          <td colspan="3" width="200" wrap class="left" >
                  <bean:write name="editInvoiceForm" property="comments" />
          </td>
        </tr>
      </table>

</logic:equal>

<!-- End of View Mode -->

<logic:equal name="editInvoiceForm" property="actionType" value="EDIT" >
<br>
<html:img width="5" src="/docs/images/spacer.gif"/><span class="redbold">Edit Invoice</span> <br>
<!--------In Modify Mode -->

<table cellpadding="0" cellspacing="0" border="0" width="853"  >
 <tr align="right"><td colspan="4" align="right"><a href="javascript:MM_openBrWindow('/isoft/iSoft/invoice/uploadInvoiceDocs.do?methodToCall=viewDocs&Id=<bean:write name="editInvoiceForm" property="invSeqId" />','','scrollbars=no,width=700,height=500&Id=')" style="text-decoration:none"><font size="2">[ Uploaded Documents ]</font></a></td></tr>
  <tr valign=TOP>
    <td >
      <!-- ========== CONTENT (start) ========== --->
     
      <table width="100%" class="tabTable" height="404" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td colspan="4" class="tabtitle" height="13">Invoice Details</td>
        </tr>
        <tr>
          <td width="17%"></td>
        </tr>
        <tr height="25">
          <td width="20%" class="right" height="0"> <bean:message key="invoiceForm.ccNum.displayName"/></td>
          <td width="25%" class="left" height="0">
            <bean:write name="editInvoiceForm" property="ccNum" />
          </td>
          <td width="20%"  class="right" height="0"> <bean:message key="invoiceForm.vendorAPName.displayName"/></td>
          <td width="30%" height="0" class="left" >
                <bean:write name="editInvoiceForm" property="vendorAPName" />
          </td>
        </tr>
        <tr height="25">
          <td width="17%"  class="right" ><bean:message key="invoiceForm.ccMNC.displayName"/></td>
          <td width="25%"  class="left" >
            <bean:write name="editInvoiceForm" property="ccMNC" />
          </td>
          <td width="22%" class="right" height="0"><bean:message key="invoiceForm.vendorId.displayName"/></td>
          <td width="30%" height="0" class="left">
                <bean:write name="editInvoiceForm" property="vendorId" />
                  <html:hidden property="vendorId" />
          </td>
        </tr>
        <tr height="25">
          <td width="20%"  class="right" ><bean:message key="invoiceForm.ccName.displayName"/></td>
          <td width="25%"  class="left" >
            <bean:write name="editInvoiceForm" property="ccName" />
          </td>
          <td width="22%" class="right"><bean:message key="invoiceForm.vendorApNum.displayName"/></td>
          <td width="30%" class="left">
                <bean:write name="editInvoiceForm" property="vendorAccNum" />
          </td>
        </tr>
        <tr height="25" >
          <td width="17%"  class="right" ><bean:message key="invoiceForm.dealMNC.displayName"/></td>
          <td width="25%"  class="left" >
            <bean:write name="editInvoiceForm" property="dealMNC" />
          </td>
          <td width="22%" class="right"><bean:message key="invoiceForm.vendorSiteCode.displayName"/></td>
          <td width="30%" class="left" >
            <bean:write name="editInvoiceForm" property="vendorSiteC" />
          </td>
        </tr>
        <tr height="25" ><td width="20%"  class="right" ><bean:message key="invoiceForm.dealN.displayName"/></td>
          <td width="27%"  class="left" ><c:out value="${editInvoiceForm.map.dealN}" /></td>
          <td width="22%" class="right"><bean:message key="invoiceForm.entryDt.displayName"/></td>
          <td width="30%" class="left" >
            <bean:write name="editInvoiceForm" property="entryDt" />
                  <html:hidden property="entryDt" />
          </td>
          </tr>
        <tr height="25">
          <td width="17%" class="right"><bean:message key="invoiceForm.planType.displayName"/></td>
          <td width="25%" height="0" class="left" >
            <bean:write name="editInvoiceForm" property="planType" />
          </td>
          <td width="22%" class="right"><bean:message key="invoiceForm.vendorAccNum.displayName"/></td>
          <td width="30%" class="left" >
                  <html:text  property="vendorAccountNo" styleClass="inputtextmedium" tabindex="9" maxlength="25" size="20"   />
          </td>

        </tr>
        <tr height="25" >
          <td width="17%" class="right"><bean:message key="invoiceForm.invId.displayName"/></td>
          <td width="25%" class="left" >
              <%  if ( !("1".equals(payStatusValue))) { %>
                    <html:text property="invId" styleClass="inputtextmedium" maxlength="50" size="15" tabindex="1"/>
              <% } %>
              <%  if ("1".equals(payStatusValue)) { %>
                        <bean:write name="editInvoiceForm" property="invId" />
                        <html:hidden property="invId" />
              <% } %>
          </td>
          <td  width="22%" class="right" > <bean:message key="invoiceForm.apRefId.displayName"/></td>
          <td width="30%" class="left" >
                  <logic:greaterThan name="editInvoiceForm" property="apRefId" value="0" >
                    <bean:write name="editInvoiceForm" property="apRefId" />
                  </logic:greaterThan>
          </td>
        </tr>

        <tr height="25" >
          <td width="17%" class="right"><bean:message key="invoiceForm.seqNo.displayName"/></td>
          <td width="25%" class="left" >
            <bean:write name="editInvoiceForm" property="invSeqId" />
          </td>
              <td class="right" height="18" width="17%"><bean:message key="invoiceForm.apLocId.displayName"/></td>
          <td class="inputtextmedium" height="18" width="25%">
                <bean:write name="editInvoiceForm" property="apLocId" />
                  <html:hidden property="apLocId" />
          </td>
             </tr>

        <tr height="25" >
          <td width="17%" class="right"><bean:message key="invoiceForm.chkId.displayName"/></td>
          <td width="25%" class="left" >
                <bean:write name="editInvoiceForm" property="checkId"  />
                  <html:hidden property="checkId"  />
          </td>

          <td class="right" width="17%"><bean:message key="invoiceForm.chkDt.displayName"/></td>
          <td width="30%" class="left" >
                        <logic:greaterThan name="editInvoiceForm" property="checkDt"  value="0" >
                              <bean:write name="editInvoiceForm" property="checkDt"  />
                        </logic:greaterThan>
                  <html:hidden property="checkDt"  />
          </td>

        </tr>

        <tr height="25" >
          <td width="17%" class="right"><bean:message key="invoiceForm.dueDt.displayName"/></td>
          <td width="25%">
                        <logic:greaterThan name="editInvoiceForm" property="dueDt" value="0" >
                        <html:text styleClass="inputtextmedium" property="dueDt" size="10" maxlength="8" styleId="date4" tabindex="2" />
                        </logic:greaterThan>
                        <logic:equal name="editInvoiceForm" property="dueDt" value="0" >
                              <html:text styleClass="inputtextmedium" property="dueDt" size="10" maxlength="8" styleId="date4" tabindex="1" value="" />
                        </logic:equal>
                      <img src="/docs/images/cal.gif" onclick="popUpCalendar(this, editInvoiceForm.dueDt , 'yyyymmdd');return false;"  border="0" alt="Click Here to Select the date">
          </td>
          <td width="22%" class="right"><bean:message key="invoiceForm.fromDate.displayName"/></td>
          <td width="30%" nowrap>
                  <c:if test="${editInvoiceForm.map.fromDate == 0 }" >
            <html:text styleClass="inputtextmedium"  property="fromDate" size="10" maxlength="8" onblur="populateServiceDates();" styleId="date2" tabindex="10" value="" />
                  </c:if>
                  <c:if test="${editInvoiceForm.map.fromDate > 0 }" >
            <html:text styleClass="inputtextmedium"  property="fromDate" size="10" maxlength="8" onblur="populateServiceDates();" styleId="date2" tabindex="10" />
                  </c:if>

           <img src="/docs/images/cal.gif" onclick="popUpCalendar(this, editInvoiceForm.fromDate , 'yyyymmdd');return false;"  border="0" alt="Click Here to Select the date">
            <span class="center"> to</span>
                  <c:if test="${editInvoiceForm.map.toDate == 0 }" >
            <html:text styleClass="inputtextmedium"  property="toDate" size="10" maxlength="8" onblur="populateServiceDates();"  tabindex="11" value="" />
                  </c:if>
                  <c:if test="${editInvoiceForm.map.toDate > 0 }" >
            <html:text styleClass="inputtextmedium"  property="toDate" size="10" maxlength="8" onblur="populateServiceDates();"  tabindex="11" />
                  </c:if>
              <img src="/docs/images/cal.gif" onclick="popUpCalendar(this, editInvoiceForm.toDate , 'yyyymmdd');return false;"  border="0" alt="Click Here to Select the date">
          </td>

        </tr>
        <tr height="25" >
          <td width="17%" class="right"><bean:message key="invoiceForm.invDt.displayName"/></td>
          <td width="25%" class="left">
                  <c:if test="${payValue == 1 }" >
                        <c:out value="${editInvoiceForm.map.invDt}" />
                        <html:hidden property="invDt" />
                  </c:if>
                  <c:if test="${payValue != 1 }" >
                  <html:text styleClass="inputtextmedium"  property="invDt" size="10" maxlength="8" styleId="date9" tabindex="3" />
                   <img src="/docs/images/cal.gif" onclick="popUpCalendar(this, editInvoiceForm.invDt , 'yyyymmdd');return false;"  border="0" alt="Click Here to Select the date">
                  </c:if>
          </td>
          <td width="22%" class="right"><bean:message key="invoiceForm.effDt.displayName"/></td>
          <td width="30%">

                  <logic:greaterThan name="editInvoiceForm" property="effDt" value="0" >
                        <html:text styleClass="inputtextmedium"  property="effDt" size="10" maxlength="8" styleId="date5" tabindex="12" />                  
                  </logic:greaterThan>
                  <logic:equal name="editInvoiceForm" property="effDt" value="0" >
                        <html:text styleClass="inputtextmedium"  property="effDt" size="10" maxlength="8" styleId="date5" tabindex="12" value="" />
                  </logic:equal>

              <img src="/docs/images/cal.gif" onclick="popUpCalendar(this, editInvoiceForm.effDt , 'yyyymmdd');return false;"  border="0" alt="Click Here to Select the date">
          </td>
        </tr>

      <logic:equal name="editInvoiceForm" property="dealType" value="SOFT" >
        <tr height="25">
          <td width="17%" class="right"><bean:message key="invoiceForm.softRatio.displayName" /></td>
          <td width="25%" nowrap>
            <html:text styleClass="inputtextmedium"  property="softRatio" onblur="populateSoftAmt();" size="10" tabindex="4" maxlength="6" /><html:checkbox styleClass="inputtextmedium" property="isHardCoded" tabindex="5" /><bean:message key="invoiceForm.isHardCoded.displayName"/>
          </td>
          <td class="right" width="26%"><bean:message key="invoiceForm.softAmt.displayName"/></td>
          <td width="30%">
                  <div id="soft" class="left"></div>
            <html:hidden property="softAmt" size="10" />
          </td>
        </tr>
      </logic:equal>

       <tr height="25" >
          <td class="right" height="18" width="17%"><bean:message key="invoiceForm.invStatus.displayName"/></td>
          <td class="left" height="18" width="25%" >

             <!---- It should have only New and Cancel-->
              <%  if ( "1".equals(payStatusValue)) { %>
                       <logic:iterate id="invSt" name="<%= WebKeys.INV_STATUSES %>" indexId="index" >
                            <logic:equal name="invSt" property="statusId" value="<%= invStatusValue %>" >
                                               <bean:write name="invSt" property="statusN" />
                                    </logic:equal>
                    </logic:iterate>
                          <html:hidden property="invStatus" />
              <% } else {%>
            <html:select styleClass="inputtextmedium" property="invStatus" tabindex="6" >
                    <%  if (!( "6".equals(invStatusValue))) { %>
                <html:option value="0" >
                       <logic:iterate id="invSt" name="<%= WebKeys.INV_STATUSES %>" indexId="index" >
                            <logic:equal name="invSt" property="statusId" value="<%= invStatusValue %>" >
                                               <bean:write name="invSt" property="statusN" />
                                    </logic:equal>
                    </logic:iterate>                        
                        &nbsp;&nbsp;</html:option>
                        <% } %>

                <html:option value="6" >Unpaid &nbsp;&nbsp;&nbsp;</html:option>
        <!-- <html:option value="5" >Cancel &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</html:option>-->
            </html:select>
              <% } %>
                   <c:if test="${editInvoiceForm.map.invStatus == 7 }">
                        <c:if test="${editInvoiceForm.map.appUsrI != ''}">(A)</c:if>
                        <c:if test="${editInvoiceForm.map.appUsrI == '' or  editInvoiceForm.map.appUsrI == null}">(U)</c:if>
                   </c:if>
         </td>

          <td width="22%" class="right" ><bean:message key="invoiceForm.status.displayName"/></td>
          <td width="30%" class="left" >   
              <%  if ( "1".equals(payStatusValue)) { %>
                  <font face="arial" size="2"><b>Paid</b></font>
                  <html:hidden property="status" value="1" />
              <%  }else { %>
                 <logic:iterate id="paySt" name="<%= WebKeys.PAY_STATUSES %>" indexId="index" >
                <logic:equal name="paySt" property="statusId" value="<%= payStatusValue %>" >
                             <bean:write name='paySt' property='statusN' />
                        </logic:equal>
             </logic:iterate>
                        <html:hidden property="status" value="<%= payStatusValue %>"  />
              <%  } %>
          </td>

        </tr>
        <tr height="25">
          <td width="17%" class="right"><bean:message key="invoiceForm.total.displayName" /></td>
          <td width="25%" class="left" nowrap="true" >
              <%  if ( "2".equals(payStatusValue)) { %>
              <logic:equal name="editInvoiceForm" property="dealType" value="SOFT" >
              <html:text styleClass="inputtextmedium" property="total" onblur="populateSoftAmt();" maxlength="10" size="15" tabindex="7"/>  
              </logic:equal>
                    <logic:notEqual name="editInvoiceForm" property="dealType" value="SOFT" >
                    <input type="text" class="inputtextmedium" name="total" maxlength="10" size="15" tabindex="6" value='<fmt:formatNumber value="${editInvoiceForm.map.total}" pattern="${usr.appProfile.crcyFormat}"/>' >   
              </logic:notEqual>
                  
              <%  }else { %>
                    <fmt:formatNumber value="${editInvoiceForm.map.total}" pattern="${usr.appProfile.crcyFormat}"/>            
              <html:hidden property="total" />                        
              <%  } %>

          </td>
          <td class="right" width="26%"><bean:message key="invoiceForm.ccy.displayName"/></td>
          <td width="30%">
            <html:select  styleClass="inputtextmedium" tabindex="13" property="ccy" value="<%= curValue %>">
                  <%
                  //java.util.ArrayList cList = (java.util.ArrayList) request.getAttribute("curList");
                  //pageContext.setAttribute("curList", cList);
                  %>
                              <html:options collection="curList" property="code" labelProperty="codeDesc" />
            </html:select>
          </td>
        </tr>

            <tr height="25">
              <td width="23%" class="right" nowrap="true" ><bean:message key="invoiceForm.repCcy.displayName"/>&nbsp;(in <c:out value="${editInvoiceForm.map.repCcy}" />) :&nbsp; </td>
          <td width="30%" class="left">       <fmt:formatNumber value="${editInvoiceForm.map.repGrossPay}" pattern="${usr.appProfile.crcyFormat}"/> </td>

          <td width="17%" class="right"><bean:message key="invoiceForm.apSentDt.displayName"/></td>
          <td width="25%" class="left" >
                  <!----- If the status is Paid AP sent Date cannot be changed ---->
                          <logic:greaterThan name="editInvoiceForm" property="apSentDt"  value="0" >
                                <bean:write name="editInvoiceForm" property="apSentDt"  />
                          </logic:greaterThan>
                          <html:hidden  property="apSentDt" />
          </td>

            </tr>
            <tr height="25">
             <td class="right" width="26%"><bean:message key="invoiceForm.forAmt.displayName"/></td>
          <td width="30%" class="left" >
              <logic:greaterThan name="editInvoiceForm" value="foreignAmt" value="0" >
                   <fmt:formatNumber value="${editInvoiceForm.map.foreignAmt}" pattern="${usr.appProfile.crcyFormat}"/>
              </logic:greaterThan>
              <html:hidden name="editInvoiceForm" property="foreignAmt" />
          </td>
            </tr>
        <tr height="22" >
          <td width="17%" class="right" ><bean:message key="invoiceForm.comments.displayName"/></td>
          <td colspan="4" height="40">
            <html:textarea cols="62" rows="2" styleClass="inputtextmedium" property="comments" tabindex="8" onkeydown="if ( document.forms[0].comments.value.length > 254 ) { document.forms[0].comments.value = document.forms[0].comments.value.substring(0, 254); window.status='Length exceeded..'; } else window.status='';" onblur="window.status='';" > <bean:write name="editInvoiceForm" property="comments" /></html:textarea><br>
          </td>
        </tr>
        <tr height="10" >
            <td>&nbsp;</td>
            </tr>
      </table>

</logic:equal>

<!-- End of Edit Mode  ----->


<!--- 1. Populate the parent values from Data from DB in view Mode  -->

<logic:equal name="editInvoiceForm" property="actionType" value="VIEW" >
<!--- Display dynamic uneditable data using logic tags -->
<% if (displayChildRecs == 0){ %>
<logic:present name="InvDetails">

      <table  class="tabTable" width="100%" id="vtable">
        <tr>
          <td colspan="12" class="tabtitle">
            <div align="left">Service Details<!-- <html:img width="400" height="9" src="/docs/images/spacer.gif"/><a href="javascript:MM_openBrWindow('/isoft/iSoft/invoice/uploadInvoiceDocs.do?methodToCall=viewDocs&Id=<bean:write name="editInvoiceForm" property="invSeqId" />','','scrollbars=no,width=700,height=500&Id=')" style="text-decoration:none"><font color="#FFFFFF">View/Delete/Upload
              Details</font></a>--></div>
          </td>
        </tr>
        <tr>
          <th width="3%">
            <div align="center" >No. </div>
          </th>
          <td>&nbsp;</td>
          <th width="24%">
            <div align="center" ><bean:message key="invoiceForm.fromServiceDt.displayName"/></div>
          </th>
          <td nowrap>&nbsp;</td>
          <th  >
            <div align="center"><bean:message key="invoiceForm.serviceDetails.displayName"/></div>
          </th>
          <td>&nbsp;</td>
          <th width="10%" nowrap>
            <div align="center"><bean:message key="invoiceForm.unitCost.displayName"/><label for="contractStatusEntry" class="inputText"></label></div>
          </th>
          <td>&nbsp;</td>
          <th width="7%" nowrap>
            <div align="center"><bean:message key="invoiceForm.qnty.displayName"/></div>
          </th>
          <td>&nbsp;</td>
          <th width="20%" nowrap>
            <div align="center"><bean:message key="invoiceForm.unitTotal.displayName"/></div>
          </th>
          <th width="20%" nowrap>&nbsp;</th>
        </tr>
      <logic:iterate id="invDet" name="InvDetails" indexId="index" scope="request" >
        <tr id='a'>
          <td width="3%" class="center">
                        <%= ++ m_intChildRowNum %>
          </td>
          <td width="1%" nowrap><html:img width="8" height="8" src="/docs/images/spacer.gif"/></td>
          <td width="24%" nowrap class="center">

                  <logic:greaterThan  name="invDet" property="serviceFromDt" value="0" >
              <bean:write name="invDet" property="serviceFromDt" />
                  </logic:greaterThan>
              <span class="center"> &nbsp;to &nbsp;</span>
                  <logic:greaterThan  name="invDet" property="serviceToDt" value="0" >
              <bean:write name="invDet" property="serviceToDt" />
                  </logic:greaterThan>
             

          </td>
          <td width="1%"><html:img width="8" height="8" src="/docs/images/spacer.gif"/></td>
          <td width="31%" class="left" >
                  <bean:write name="invDet" property="invDesc" />
          </td>
          <td width="1%"><html:img width="8" height="8" src="/docs/images/spacer.gif"/></td>
          <td width="10%" class="center">
                  <fmt:formatNumber value="${invDet.invPrice}" pattern="${usr.appProfile.crcyFormat}"/>
          </td>
          <td width="1%" nowrap><html:img width="8" height="8" src="/docs/images/spacer.gif"/></td>
          <td width="7%" class="right">
                  <bean:write name="invDet" property="invQty" />
          </td>
          <td width="1%"><html:img width="8" height="8" src="/docs/images/spacer.gif"/></td>
          <td width="20%" class="right" >
                        <fmt:formatNumber value="${invDet.unitTotal}" pattern="${usr.appProfile.crcyFormat}"/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
          </td>
          <td width="20%">&nbsp;</td>
        </tr>
      </logic:iterate>
      </table>

</logic:present>
<% } %>
</logic:equal>


<!---  2. Populate the child values in Edit Mode -->
<logic:equal name="editInvoiceForm" property="actionType" value="EDIT" >

      <table  class="tabTable" width="100%" id="vtable">
        <tr>
          <td colspan="12" class="tabtitle">
            <div align="left">Service Details <html:img width="400" height="9" src="/docs/images/spacer.gif"/><!--<a href="#" onclick="MM_openBrWindow('/isoft/iSoft/invoice/uploadInvoiceDocs.do?methodToCall=viewDocs&Id=<bean:write name="editInvoiceForm" property="invSeqId" />','','scrollbars=yes,width=700,height=500')" style="text-decoration:none"><font color="#FFFFFF">View/Delete/Upload
              Details</font></a>--></div>
          </td>
        </tr>
        <tr>
          <th width="3%">
            <div align="center" >No. </div>
          </th>
          <td nowrap></td>
          <th width="24%">
            <div align="center" ><bean:message key="invoiceForm.fromServiceDt.displayName"/></div>
          </th>
          <td nowrap>&nbsp;</td>
          <th  >
            <div align="center"><bean:message key="invoiceForm.serviceDetails.displayName"/></div>
          </th>
          <td>&nbsp;</td>
          <th width="10%" nowrap>
            <div align="center"><bean:message key="invoiceForm.unitCost.displayName"/><label for="contractStatusEntry" class="inputText"></label></div>
          </th>
          <td>&nbsp;</td>
          <th width="7%" nowrap>
            <div align="center"><bean:message key="invoiceForm.qnty.displayName"/></div>
          </th>
          <td>&nbsp;</td>
          <th width="20%" nowrap>
            <div align="center"><bean:message key="invoiceForm.unitTotal.displayName"/></div>
          </th>
          <th width="20%" nowrap>&nbsp;</th>
        </tr>
      <%
        for (int noOfRows = 0 ; noOfRows < sizeOfRecs+1 ; noOfRows++ ) {
      %>
        <tr id='a'>
          <td width="3%" class="bio_list">
            <div align="center"><%= noOfRows+1 %></div>
          </td>
          <td width="1%" nowrap><html:img width="8" height="8" src="/docs/images/spacer.gif"/></td>
          <td width="24%" nowrap>
            <div align="center">
                <html:text styleClass="inputtextmedium" property="fromServiceDt"  maxlength="8" size="10"
                        value="<%=fromService[noOfRows] %>" /><img src="/docs/images/cal.gif" onclick="popUpCalendar(this, editInvoiceForm.fromServiceDt[<%= noOfRows %>] , 'yyyymmdd');return false;"  border="0" alt="Click Here to Select the date">
              to
                <html:text styleClass="inputtextmedium" property="toServiceDt" maxlength="8" size="10" value="<%=toService[noOfRows] %>"/><img src="/docs/images/cal.gif" onclick="popUpCalendar(this, editInvoiceForm.toServiceDt[<%= noOfRows %>] , 'yyyymmdd');return false;"  border="0" alt="Click Here to Select the date">
            </div>
          </td>
          <td width="1%"><html:img width="8" height="8" src="/docs/images/spacer.gif"/></td>
          <td width="31%" >
            <div align="left">
              <html:text styleClass="inputtextmedium" property="serviceDetails"  value="<%=serviceDet[noOfRows] %>" size="25" maxlength="25" />
            </div>
          </td>
          <td width="1%"><html:img width="8" height="8" src="/docs/images/spacer.gif"/></td>
          <td width="10%">
            <div align="center">
              <html:text styleClass="inputtextmedium" property="unitCost" size="8" value="<%= unitCost[noOfRows] %>" onblur="addTotal();"/>
            </div>
          </td>
          <td width="1%" nowrap><html:img width="8" height="8" src="/docs/images/spacer.gif"/></td>
          <td width="7%">
            <div align="center">
              <html:text styleClass="inputtextmedium" property="qnty" size="5" value="<%=qnty[noOfRows] %>" onblur="addTotal();"/>
            </div>
          </td>
          <td width="1%"><html:img width="8" height="8" src="/docs/images/spacer.gif"/></td>
          <td width="20%">
            <div align="center">
              <html:text styleClass="inputtextmedium" property="unitTotal" size="10" value="<%=unitTotal[noOfRows]%>" />
            </div>
          </td>
          <td width="20%">&nbsp;</td>
        </tr>
        <% } %>
        <tr id="y">
          <td  >&nbsp;</td>
          <td >&nbsp;</td>
          <td>&nbsp;</td>
          <td >&nbsp;</td>
          <td   >&nbsp;</td>
          <td >&nbsp;</td>
          <td >&nbsp;</td>
          <td >&nbsp;</td>
          <td  >&nbsp;</td>
          <td  >&nbsp;</td>
          <td valign="bottom" align="center" > &nbsp; </td>
                  <td valign="bottom" align="center" width="120" ></td>
        </tr>
        <tr>
          <td width="3%" class="bio_list">&nbsp;</td>
          <td width="1%">&nbsp;</td>
          <td width="24%" align="right" class="bio_regtext">&nbsp;</td>
          <td width="1%" nowrap class="bio_regtext">&nbsp;</td>
          <td width="31%" class="bio_listMedium" align="center"><html:link href="javascript:cloneRow('a', 'y');">ADD
            ADDL. DETAILS</html:link> </td>
          <td width="1%" nowrap class="bio_regtext">&nbsp;</td>
          <td width="10%" nowrap class="bio_regtext">&nbsp;</td>
          <td width="1%">&nbsp;</td>
          <td width="7%" class="right">
                  &nbsp;
          </td>
          <td width="1%" nowrap class="bio_regtext">&nbsp;</td>
          <td width="20%" nowrap class="right">      &nbsp;      </td>
          <td width="6%" nowrap valign="bottom">&nbsp;      </td>
        </tr>
      </table>
</logic:equal>

      <br>



<logic:equal name="editInvoiceForm" property="actionType" value="VIEW" >
      <c:if test="${editInvoiceForm.map.invStatus == 5 }">
      <html:submit styleClass="submitsmall" value="Edit" property="submit" disabled="true" />
      </c:if>
      <c:if test="${editInvoiceForm.map.invStatus != 5 }">
      <html:submit styleClass="submitsmall" value="Edit" property="submit"  />
      </c:if>

      <c:if test="${editInvoiceForm.map.status == 1 or editInvoiceForm.map.invStatus == 1 or editInvoiceForm.map.invStatus == 2 or editInvoiceForm.map.invStatus == 3 or editInvoiceForm.map.invStatus == 4 or editInvoiceForm.map.invStatus == 5 or editInvoiceForm.map.invStatus == 7 }">
           <html:button styleClass="submitsmall" value="Delete" property="button" disabled="true" />
      </c:if>


      <c:if test="${editInvoiceForm.map.status != 1 and editInvoiceForm.map.invStatus != 1 and editInvoiceForm.map.invStatus != 2 and editInvoiceForm.map.invStatus != 3 and editInvoiceForm.map.invStatus != 4 and editInvoiceForm.map.invStatus != 5 and editInvoiceForm.map.invStatus != 7 }">
           <html:button styleClass="submitsmall" value="Delete" property="button" onclick="doDelete();" />
      </c:if>
      <html:button styleClass="submitsmall" value="Cancel" property="button" onclick="goToSearchPage();"/>
      <Input type="button" class="submitsmall" value="Create Invoice for Deal - <c:out value='${editInvoiceForm.map.dealMNC}' />" name="button" onclick="goToCreateInvoicePage();" />
        <Input type="button" class="submitsmall" value="Move to Other Deal" name="button" onclick="goToSelectDealPage();" />
</logic:equal>


<logic:equal name="editInvoiceForm" property="actionType" value="EDIT" >
            <logic:equal name="editInvoiceForm" property="dealType" value="SOFT" >
                  <html:button styleClass="submitsmall" value="Update" property="button" onclick="softSubmit(editInvoiceForm)"/>
           </logic:equal>
            <logic:notEqual name="editInvoiceForm" property="dealType" value="SOFT" >
                  <html:button styleClass="submitsmall" value="Update" property="button"  onclick="hardSubmit(editInvoiceForm)" />
           </logic:notEqual>
      <html:button styleClass="submitsmall" value="Cancel" property="button" onclick="goToViewPage();"/>
</logic:equal>

      <br>
      <!-- ========== CONTENT (end) ========== -->
    </td>
  </tr>
</table>

<html:hidden property="actionType" />
<html:hidden property="methodToCall" />
<html:hidden property="ccNum" />
<html:hidden property="ccName" />
<html:hidden property="dealMNC" />
<html:hidden property="planType" />
<html:hidden property="checkDtAsString" />
<html:hidden property="aPSentDtAsString" />
<html:hidden property="dealType" />
<html:hidden property="invSeqId" />
<html:hidden property="apRefId" />
<html:hidden property="currentDt" styleId="date3" />

<logic:equal name="editInvoiceForm" property="actionType" value="EDIT" >
<input type="hidden" name="lastActvyDt" value="<%= actvyValue +"" %>" >
</logic:equal>

      </html:form>


<html:javascript formName="editInvoiceForm" />

<script>

 function doDelete(){
      //alert('/jsp/delinvask.jsp?Id=<bean:write name="editInvoiceForm" property="invId" />');
        window.location = '/isoft/iSoft/jsp/delinvask.jsp?Id=<bean:write name="editInvoiceForm" property="invSeqId" />&InvId=<bean:write name="editInvoiceForm" property="invId" />&CC=<bean:write name="editInvoiceForm" property="ccName" />' ;
 }

function doSubmitToCancel( obj ){
   document.forms[0].methodToCall.value ='cancel';
   obj.submit();

}

function goToSearchPage(){
      window.location="/isoft/iSoft/jsp/ListInvoices.jsp";
}

function goToViewPage(){
      window.location='/isoft/iSoft/invoice/viewInvoice.do?methodToCall=view&Id=<bean:write name="editInvoiceForm" property="invSeqId" />';
}

function goToCreateInvoicePage(){
      window.location='/isoft/iSoft/invoice/searchDeal.do?dealMNC=<c:out value="${editInvoiceForm.map.dealMNC}" />&effDt='+document.forms[0].currentDt.value;
}

function goToSelectDealPage(){
      window.location='/isoft/iSoft/invoice/selectDealAndViewInvoice.do?Id=<bean:write name="editInvoiceForm" property="invSeqId" />';
}

function softSubmit(obj){
      var result = 0;

       if (validateEditInvoiceForm(obj)){

            
            //validateDates(document.forms[0].fromDate);
            //validateDates(document.forms[0].toDate);
            if (document.forms[0].effDt.value - document.forms[0].invDt.value > 20000 ){

                  alert('Effective Date should be within 2 years of Invoice Date');
                  document.forms[0].effDt.focus();
                  result = 1;

            }

              if (((document.forms[0].fromDate.value.length > 0 ) && (document.forms[0].fromDate.value.length != 8 ))&& (result == 0 ))
              {
                    alert('Invalid From Date');
                        document.forms[0].fromDate.focus();
                        result = 1;
              }
              if (((document.forms[0].toDate.value.length > 0 ) && (document.forms[0].toDate.value.length != 8 )) && (result == 0 ))
              {
                    alert('Invalid To Date');
                        document.forms[0].toDate.focus();
                        result = 1;
              }
            // check if FROM Date is greater than TO Date
            if (!(compareDates( document.forms[0].fromDate , document.forms[0].toDate ))){
               
                  alert('From Date cannot be greater than To Date');
                  document.forms[0].fromDate.focus();
                  result = 1;

            }

            // check if the effDt is less than Today

            if ((!(compareDates( document.forms[0].effDt , document.forms[0].currentDt ))) && (result == 0)) {
               
                  alert('Effective Date cannot be greater than Today\'s Date');
                  document.forms[0].effDt.focus();
                  result = 1;

            }

            if (( isNaN(document.forms[0].softRatio.value) ) && (result == 0)){

                  alert('SoftRatio is Numeric');
                  document.forms[0].softRatio.focus();
                  result = 1;

            }


            if (result == 0){
                  document.forms[0].submit();
            }


       }
}


function hardSubmit(obj){
      var result = 0 ;
       if (validateEditInvoiceForm(obj)){

            //validateDates(document.forms[0].fromDate);
            //validateDates(document.forms[0].toDate);
            if (document.forms[0].effDt.value - document.forms[0].invDt.value > 20000 ){

                  alert('Effective Date should be within 2 years of Invoice Date');
                  document.forms[0].effDt.focus();

            }else if (!(compareDates( document.forms[0].fromDate , document.forms[0].toDate ))){
               
                  alert('From Date cannot be greater than To Date');
                  document.forms[0].fromDate.focus();

            }else{
                  
              if (((document.forms[0].fromDate.value.length > 0 ) && (document.forms[0].fromDate.value.length != 8 ))&& (result == 0 ))
              {
                    alert('Invalid From Date');
                        document.forms[0].fromDate.focus();
                        result = 1;
              }
              if (((document.forms[0].toDate.value.length > 0 ) && (document.forms[0].toDate.value.length != 8 )) && (result == 0 ))
              {
                    alert('Invalid To Date');
                        document.forms[0].toDate.focus();
                        result = 1;
              }

                  if (result == 0) document.forms[0].submit();

            }
       }

}

</script>
<logic:equal name="editInvoiceForm" property="actionType" value="EDIT" >
      <logic:equal name="editInvoiceForm" property="dealType" value="SOFT" >
      <script>populateSoftAmt()</script>
      </logic:equal>
</logic:equal>

<script>window.onLoad=todaysDate('date3')</script>
Ok, this big Jsp along with the other template inserts will make it a mammoth jsp code. that sure is the reason for throwing that error.
It will take some time for me to go thro' this jsp and suggest changes.
One more thing is dont you want to start using Struts Tiles instead of Struts Template.??? just a thought though not exactly related with your problem.

Avatar of narrav

ASKER

Kiran,

Thanks for the catch on Tiles versus Template.. Well, first, code is not written by me. So I cannot enhance it right-away. This is a client code which I just need to migrate it to WL 8.1 and if it works without changing the code, or may be with minor changes, I am sure I will convice them to allow changing some of the code itself as well..
And also, I don't know much of Java/jsp.. just getting familiar with it while trying to accompllish this project.. But your suggestiong I am sure is excllent, I will keep this in mind and suggest it here..

Let me know if u have any ideas on how to fix this problem...


Thanks again for the help u r providing
Avatar of narrav

ASKER

Kiran, I am not sure why exactly same jsp code is working on other server with 5.6 OS and WL 6.1..

Remember sys admin does prepare the servers and do some settings.. but I don't have access to sys admins here...
they are client guys and don't talk with us..

I can login into the server but cannot change their settings.. if there is something u want me to check on this server (5.8/WL 8.1 they server we have issue with), I can do that..

But since I am not sys admin, please also tell me what command to run for any info u want
Avatar of narrav

ASKER

Hello??

Any help?

Kiran? Found anythng which might be of help??
Avatar of narrav

ASKER

Kiran,


if there is no way to fix this, cud u tell me how to split the jsp page..

i just want to try this on my local instance
can i just cut contents of jsp page and make a new file and then call this file in editInovoice...jsp as <jsp:incclude tag??

i tried this, but it starts throwing error that variables not found.. i guess i cannot cut and paste the contents of jsp here and there and then include it.. i have to be careful in that too..

can u help me splitting the jsp page pls if that is the only solution left? sorry i don't know much of jsp

regards
i had a little work load yesterday so couldnt go thro your code.  i will do it today.
meanwhile in the top of your edit invoice page you can delete this line

for ( sizeOfRecs = 0 ; sizeOfRecs < m_invoiceDets.length ; sizeOfRecs ++){

---->>     m_invoiceDet = new com.citi.soft.invoice.InvoiceDetails();
     m_invoiceDet = m_invoiceDets[ sizeOfRecs ];


will go thro the code and tell you.

Thanks
Avatar of narrav

ASKER

I did this as you suggested above..

same thing (same error).. i  know it was not a solution to my problem.. u fixed bad code..

but just wanted to let you know

I am eagerly waiting for ur response on this because i am loosing really time on this issue..

appreciate your help
ASKER CERTIFIED SOLUTION
Avatar of kiranhk
kiranhk

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of narrav

ASKER

Ok,

I did firstly only removed EDIT MODE from my jsp and put it in new jsp (abc.jsp)
and then i included abc.jsp in editInvoice.jsp -- it throw same rror

#<Nov 16, 2004 12:48:26 PM EST> <Error> <HTTP> <webweia60d> <isoftNode1> <ExecuteThread: '22' for queue: 'default'> <<WLS K
ernel>> <> <BEA-101017> <[ServletContext(id=2342928,name=isoft,context-path=/isoft/iSoft)] Root cause of ServletException.
javax.servlet.jsp.JspException: (class: jsp_servlet/_jsp/_invoices/__editinvoicedetails, method: _jspService signature: (Ljava
x/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V) Illegal target of jump or branch
        at org.apache.struts.taglib.template.InsertTag.doEndTag(InsertTag.java:164)
        at jsp_servlet._jsp.__modinvoice._jspService(__modinvoice.java:247)
        at weblogic.servlet.jsp.JspBase.service(JspBase.java:33)
        at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction


Then I removed VIEW_MODE also as you suggested.. put in def.jsp

and included def.jsp in editInvoice.jsp -- it seems to be working --  :)

no error after this..

But if I go to weblogic location where all jsp are coverted to java and compiled

i see
  101274 Nov 16 12:55 __editinvoicedetails.class
 724548 Nov 16 12:55 __editinvoicedetails.java

which was previously

127094 Nov 16 11:41 __editinvoicedetails.class
900230 Nov 16 11:41 __editinvoicedetails.java

so size had reduced.. looks like this is what we wanted right??

why don't is see __abc.java and __abc.class and __def.java and __def.class??

So is this the only way to resolve this?

I may have more jsp pages with same problem - will i have to split all of them like this?

how does developer make sure while writing the jsp pages that they are not crossing this limit ? and will not get this issue?

Avatar of narrav

ASKER

Also, let me know if there is any other easy way to fix this other than splitting the jsp page?
because ofcourse this is the only solution -- I will have to suggest client to split all jsp pages with problem..

Also - if there is no other way -- how should I tell all the developers of client to make all JSP within this limit.. I mean how will they check if they have crosssed this limit etc..

I appreciate all your guidance..

and really happy that this is working atleast -- not sure if this is a perfect solution -- but since splitting jsp is kind of big thing - i need to answer to client very technically everythign
no.... The best way is to add the JVM option for large branch. But if that doesnt work then it might have to do with the Product JVM not implementing the Spec properly or a bug in the Product JVM.

Better still you should always give more preference for maintainability than for Great Looking code or logic.

As such if you want to modify that big a JSP anytime after you first coded it will be hell of a work!!!!
Since in our enterprise applications Code is added incrementally (When we get a CR or a new feature) its always makes sense to see if you can accomodate/refactor the new requirements into a seperate JSP since the person who is going to maintain it will curse you a lot (thats what i do everytime i get a CR. but with the new project in hand i am making sure i Design it in such a way that refactoring it into seperate files will not be a problem)

Ask your client to take a look at this very good article or better still send the contents to them in  a  mail

http://www.theserverside.com/news/thread.tss?thread_id=29114
As such there is no hand rule for checking out the limit of your JSP. but you sure will get an error when u exceed it.
The Developers will be in a better position to decide when the code is growing big and will be difficult to maintain. (This they will remember only when they have worked for some time on a very big Enterprise maintainance project!!!!!!!!!!!) otherwise nobody will bother to refactor code into seperate files, everybody will just keep on adding incrementally to the existing code.

Avatar of narrav

ASKER

Kiran,

Understood your comments.. but not understood 2 things:

1). >>Product JVM not implementing the Spec properly or a bug in the Product JVM.
Is it possible that WEBLOGIC 8.1 (BEA) has not implemented tthe JVM correctly?
I mean it is BEA -- kind of big app server company -- and moreover same code is working in weblogic 6.1 version. why and how come they have problem in 8.1 version
I still could not get it. I opened a support TkT with BEA but they gave me option to split the jsp page
and they didn't even suggested to do this branch=true thing which you suggested..
wehn i answered them -- splitting is not an option -- they are still researching the issue (since 7 days now) with no answer..
why in 6.1 it is working -- that drives me crazy

2). you have mentioed refactor. what exaclt it means? does this mean splitting the jsp pages and keep each requirement in separate jsp page?


Avatar of narrav

ASKER

Is this long branch issue something to do
JVM used from weblogic

in one of the start-up script

i found
Sun)
  #  JAVA_VM=-client
    JAVA_VM=-server
    MEM_ARGS="-Xms64m -Xmx256m -XX:MaxPermSize=128m"
  ;;
  *)


so not sure what vendor of JVM we use -- but is it SUN JVM?

may be sun JVM has a problem or somethng..

possible?
Avatar of narrav

ASKER

Also Kiran,

One more thing --

If they are pointing to fault JVM.. cannot I set something in my setEnv.sh so that they point to my JVM thus fixing all the bugs

If in setEnv.sh, I do

JAVA_HOME= <my JVM>
export JAVA_HOME

will not they pick it up..

I have already

JAVA_HOME=<1.4.2_06 version of jdk>

and they were picking it.. because I saw in logs java_home to be in my directory 1.4.2_06..

hope u understood what i mean
yes... basically that is the problem with JRocket JVM. it might be that when moving to Weblogic 8 there might have been some bugs introduced which might not take the JVM options!!!!
These kind of problems are there even with Webshpere.. so u cannot say anything. just by being a big company doesnt mean they have confirm 100% to the spec.
yes, it can pick it up. but i am not sure whether the other JVM doesnt have this problemss....
but you can surely try pointing to a different JVM and check your code.
The problem with product support is that they always do a search on their internal bug-solution database and whatever first thing that they come up with they will tell u to do. They really dont actually go into the code or the problem to find a solution. its just like we doing a search on google and finding some ideas from the forums if somebody has posted a similar kind of problem before.


By Refactor i meant to split the JSP/Java Code. whichever piece of related code can work independently and if there is a logical if conditions for that piece of code then you can refactor that into seperate JSP or java method....
Avatar of narrav

ASKER

Kiran,

If I point to 1.4.2_06 ..

who is the vendor of my JVM?

$ java -version
java version "1.4.2_06"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_06-b03)
Java HotSpot(TM) Client VM (build 1.4.2_06-b03, mixed mode)
$



does it say it here?

How can i find it?
you can point to your JVM and use this in your code to get the property to print it.

System.out.println(System.getProperty("java.vendor"));

i am not sure how to get it from the command line without checking the Registry in Windows. you can just write a main method and print this !!
Avatar of narrav

ASKER

well,

kiran,

this is a solaris box --

and mroeover -- they don't allow me to system.out.println..

if I do system.out.println -- they somehow just ignore it.. and it never gets displayed in logs or console..
it will be printed in the logs.. or you can put this directly in the jsp using out.println then it will display on your jsp page itself.
if you r using some kind of logger like Log4J or JDK logging API then you need to see what king of debug leve has been set for the logger so that it will print that to the logs.
Avatar of narrav

ASKER

oh well,

ignore my last question..

i was able to LICENSE FILE on solaris box..

it is from SUN... so probably JVM is also from SUN RIGHT?

well, I pointed to 1.4.2_06 from SUN.. same problem appears

also long brach doesn't work for this JVM also..

would u know some link or document which says long branch doesn't work for JVM 1.4.2_06 from SUN?

just curious
at least i am not aware of any link which says that...
but the link which i posted above show for websphere a patch fixing for this bug
Avatar of narrav

ASKER

Kiran,

I appreciate all the help u have provided in this long problem.

Thanks and You have a great day..

I think no other option is there for me then to split jsp page for now



I appreciate it
you are Welcome.
hope somebody will benefit with this thread!!!!
since there is not much info on the google for this problem..

Also you can check out this link for some very good design patterns while refactoring your Java code.

http://www.industriallogic.com/xp/refactoring/catalog.html

This has got lotz of information for refactoring and redesigning your applications/code
Avatar of narrav

ASKER

Kiran,

I am facing a small issue with this refactoring..

I know the question is closed now..

can u still help on this?

or do i need to open a new question..

it is a smll isssue but since i don't know struts much.. so don't know how to quickly fix it..

would appreciate help pls..
ok....i had left by the time you posted this yesterday..

sure...i can help u on that..
but i think the page editors wont let you post more than 1 question per thread..
so yes, you need to open a new question..