cancel
Showing results for 
Search instead for 
Did you mean: 

Cache-handling in EP6 SP2

Former Member
0 Kudos

Hi,

we've made a wizard-application with pages containing HTMLB-code for info- and input-fields, and java-code for handling the user-input. When I load the application in an Iview it all works fine. The problem is when the Iview is closed and opened again, then instead of a "fresh" application/page the last page that was open including the user-input is shown.

To "reset" the application I either have to upload the par-file again, or select it under "Archive Deployment Checker" and press update in the component manager-page.

My guess is that this has to do with cache-handling, and since I'm quite new to SAP EP6-development I wondered if anyone could give me some hints on how to avoid this type of problem ?

Accepted Solutions (0)

Answers (2)

Answers (2)

Former Member
0 Kudos

The solution seems to be to change the scope from application to session.

Thanks for helping.

Former Member
0 Kudos

It could be that beans put in the component session for retrieval in the jsp, are remember on the next view of the iview. It is therefore necessary to do some reset work in the doInitialization method.

Could you post some of your code (especially doInitialization and the way you transfer data to the jsp)

Former Member
0 Kudos

Hi and thanks for your quick response.

Below are code-snipplets from the java- and jsp/htmlb-code.

The DOInitialisation-part of the code with the bean-initialisation.

public void doInitialization() {

// Get the request, context and profile IPortalComponentRequest request = (IPortalComponentRequest) this.getRequest();

IPortalComponentContext myContext = request.getComponentContext();

ResourceBundle resource = request.getResourceBundle();

_user = (com.sapportals.portal.security.usermanagement.IUser)request.getUser().getUser();

IPortalComponentProfile myProfile = myContext.getProfile();

// Initialization of bean

myProdInputBean = new ProductInputBean();

setBeanFromProfile(myProfile, myProdInputBean);

// Put the bean into the application context

myContext.putValue("ProductInputBean", myProdInputBean);

}

The update of bean-values is handled in the doProcessBeforeOutput-section before the JSP is loaded as shown in this example:

public void doProcessBeforeOutput() throws PageException {

IPortalComponentRequest request = (IPortalComponentRequest)this.getRequest();

IPortalComponentContext myContext = request.getComponentContext();

myProdInputBean = (ProductInputBean) myContext.getValue("ProductInputBean");

myProdInputBean.setTitle(sTitle);

myProdInputBean.setText(sText);

this.setJspName(JSP_FilePage);

}

The "definition-tag" used in the JSPs:

<jsp:useBean id="ProductInputBean" scope="application" class="bean.ProductInputBean" />

Example of how the bean-values are retrieved in the HTMLB-code:

<hbj:inputField

id="EditTitle"

type="STRING"

maxlength="100"

value="<%= ProductInputBean.getTitle()%>"

design="STANDARD"

required="TRUE"

showHelp="TRUE"

width="500">

</hbj:inputField>

Former Member
0 Kudos

From what I can see it looks ok (although its been some time since I've been programming something like this). Just a few comments:

1. What does the setBeanFromProfile(myProfile, myProdInputBean) function do ?

2. Try adding some debug code in the doInitialization code, which checks if "ProductInputBean" is in the IPortalComponentContext

3. Check that the iview isn't cached in someway

hopes this helps