You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by Niall Pemberton <ni...@btInternet.com> on 2001/06/14 01:18:10 UTC

RE: need some help.......

need some help......."jas" is not in "session" scope - the iterator is
creating it for each iteration (must be page scope?) - try it without the
"scope":

<bean:write name="jas" property="attr"/>

Niall

 -----Original Message-----
From: Jiten Mohanty [mailto:jiten.mohanty@ipseal.com]
Sent: 14 June 2001 23:57
To: struts-user@jakarta.apache.org
Subject: need some help.......


  Hi folks

  I am trying to iterate through a array of objects.Here is the code......

  <logic:iterate id="jas" name="countBeanForm" property="mbeanOper"
type="Ipseal.JbossOperationForm" scope="session">
          <td align="center">

                  <bean:write name="jas" property="attr" scope="session"/>


          </td>
  </logic:iterate>

  property "mbeanOper" : returns array[objects]

  Each Object has a property called Attr[String](set & get).I want to
display the each String in Attr[ ].Whe I run the code, i get the following
error......

  Error: 500
  Location: /ipseal_demo/bean_count.jsp
  Internal Servlet Error:
  javax.servlet.ServletException: Cannot find bean jas in scope session
          at
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImp
l.java:459)
          at
_0002fbean_0005fcount_0002ejspbean_0005fcount_jsp_44._jspService(_0002fbean_
0005fcount_0002ejspbean_0005fcount_jsp_44.java:299)

          at
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:119)
   and on......

  Can some body help on this.....

  Jiten
  Software Enginer


Re: struts and weblogic 5.1 sp9

Posted by Jonathan Asbell <ja...@i-2000.com>.
try struts-example (with the hyphen)

----- Original Message -----
From: "Grant Davies" <gr...@bluetube.com>
To: <st...@jakarta.apache.org>
Cc: "Phil Lentz (E-mail)" <pl...@insolutions.net>
Sent: Thursday, June 14, 2001 9:36 PM
Subject: struts and weblogic 5.1 sp9


> Hi,
>
> I've been trying to get the struts working with weblogic 5.1 sp9.  I have
> the latest version of struts (jakarta-struts-1.0-b3)  and I successfully
> deployed the struts-example.war.  (I can see it loaded and the servlets
> register correctly, I can access the jsp's inside)
>
> I can get the first page to come up by opening
>
> http://localhost:7001/strutsexample
>
> I can then click on the link
>
> "Register with the MailReader Demonstration Application"
>
> I then fill in a user name, password, 2nd password, full name, from
address
> and reply to address and then I hit save.
>
> The servlet then fails and the exception I get in the console is:
>
> Thu Jun 14 17:31:08 EDT 2001:<E> <WebAppServletContext-strutsexample>
> Servlet failed with Exception
> weblogic.servlet.jsp.JspException: (line 16): user is not defined as bean
>         at weblogic.servlet.jsp.JspLexer.jspException(JspLexer.java:673)
>         at
> weblogic.servlet.jsp.JspLexer.mXML_GET_PROPERTY(JspLexer.java:2994)
>         at weblogic.servlet.jsp.JspLexer.mXML_THING(JspLexer.java:1707)
>         at weblogic.servlet.jsp.JspLexer.mTOKEN(JspLexer.java:1612)
>         at weblogic.servlet.jsp.JspLexer.nextToken(JspLexer.java:1548)
>         at weblogic.servlet.jsp.JspLexer.parse(JspLexer.java:888)
>         at weblogic.servlet.jsp.JspParser.doit(JspParser.java:69)
>         at weblogic.servlet.jsp.JspParser.parse(JspParser.java:125)
>         at weblogic.servlet.jsp.Jsp2Java.outputs(Jsp2Java.java:109)
>         at
> weblogic.utils.compiler.CodeGenerator.generate(CodeGenerator.java:242)
>         at weblogic.servlet.jsp.JspStub.compilePage(JspStub.java:312)
>         at weblogic.servlet.jsp.JspStub.prepareServlet(JspStub.java:227)
>         at
>
weblogic.servlet.internal.ServletStubImpl.getServlet(ServletStubImpl.java:20
> 0)
>         at
>
weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java
> :115)
>         at
>
weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java
> :138)
>         at
>
weblogic.servlet.internal.RequestDispatcherImpl.forward(RequestDispatcherImp
> l.java:158)
>         at
>
org.apache.struts.action.ActionServlet.processActionForward(ActionServlet.ja
> va:1758)
>         at
> org.apache.struts.action.ActionServlet.process(ActionServlet.java:1595)
>         at
> org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:509)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:772)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:865)
>         at
>
weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java
> :120)
>         at
>
weblogic.servlet.internal.ServletContextImpl.invokeServlet(ServletContextImp
> l.java:915)
>         at
>
weblogic.servlet.internal.ServletContextImpl.invokeServlet(ServletContextImp
> l.java:879)
>         at
>
weblogic.servlet.internal.ServletContextManager.invokeServlet(ServletContext
> Manager.java:269)
>         at
>
weblogic.socket.MuxableSocketHTTP.invokeServlet(MuxableSocketHTTP.java:365)
>         at
> weblogic.socket.MuxableSocketHTTP.execute(MuxableSocketHTTP.java:253)
>         at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:129)
>
> Can anyone shed light on this, its driving me nuts.  I've gone through all
> the xml, dtd's, java source files and can find nothing wrong, and this is
> the example that comes with struts, completely un-touched.
>
> Cheers,
> Grant Davies
> b l u e t u b e p r o d u c t i o n s
> http://www.bluetube.com
> The new Bluetube Productions Sampler, coming August 2001
>


struts and weblogic 5.1 sp9

Posted by Grant Davies <gr...@bluetube.com>.
Hi,

I've been trying to get the struts working with weblogic 5.1 sp9.  I have
the latest version of struts (jakarta-struts-1.0-b3)  and I successfully
deployed the struts-example.war.  (I can see it loaded and the servlets
register correctly, I can access the jsp's inside)

I can get the first page to come up by opening

http://localhost:7001/strutsexample

I can then click on the link

	"Register with the MailReader Demonstration Application"

I then fill in a user name, password, 2nd password, full name, from address
and reply to address and then I hit save.

The servlet then fails and the exception I get in the console is:

Thu Jun 14 17:31:08 EDT 2001:<E> <WebAppServletContext-strutsexample>
Servlet failed with Exception
weblogic.servlet.jsp.JspException: (line 16): user is not defined as bean
        at weblogic.servlet.jsp.JspLexer.jspException(JspLexer.java:673)
        at
weblogic.servlet.jsp.JspLexer.mXML_GET_PROPERTY(JspLexer.java:2994)
        at weblogic.servlet.jsp.JspLexer.mXML_THING(JspLexer.java:1707)
        at weblogic.servlet.jsp.JspLexer.mTOKEN(JspLexer.java:1612)
        at weblogic.servlet.jsp.JspLexer.nextToken(JspLexer.java:1548)
        at weblogic.servlet.jsp.JspLexer.parse(JspLexer.java:888)
        at weblogic.servlet.jsp.JspParser.doit(JspParser.java:69)
        at weblogic.servlet.jsp.JspParser.parse(JspParser.java:125)
        at weblogic.servlet.jsp.Jsp2Java.outputs(Jsp2Java.java:109)
        at
weblogic.utils.compiler.CodeGenerator.generate(CodeGenerator.java:242)
        at weblogic.servlet.jsp.JspStub.compilePage(JspStub.java:312)
        at weblogic.servlet.jsp.JspStub.prepareServlet(JspStub.java:227)
        at
weblogic.servlet.internal.ServletStubImpl.getServlet(ServletStubImpl.java:20
0)
        at
weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java
:115)
        at
weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java
:138)
        at
weblogic.servlet.internal.RequestDispatcherImpl.forward(RequestDispatcherImp
l.java:158)
        at
org.apache.struts.action.ActionServlet.processActionForward(ActionServlet.ja
va:1758)
        at
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1595)
        at
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:509)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:772)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:865)
        at
weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java
:120)
        at
weblogic.servlet.internal.ServletContextImpl.invokeServlet(ServletContextImp
l.java:915)
        at
weblogic.servlet.internal.ServletContextImpl.invokeServlet(ServletContextImp
l.java:879)
        at
weblogic.servlet.internal.ServletContextManager.invokeServlet(ServletContext
Manager.java:269)
        at
weblogic.socket.MuxableSocketHTTP.invokeServlet(MuxableSocketHTTP.java:365)
        at
weblogic.socket.MuxableSocketHTTP.execute(MuxableSocketHTTP.java:253)
        at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:129)

Can anyone shed light on this, its driving me nuts.  I've gone through all
the xml, dtd's, java source files and can find nothing wrong, and this is
the example that comes with struts, completely un-touched.

Cheers,
Grant Davies
b l u e t u b e p r o d u c t i o n s
http://www.bluetube.com
The new Bluetube Productions Sampler, coming August 2001


RE: need some help.......

Posted by Jiten Mohanty <ji...@ipseal.com>.
Craig,

Thanks for the response.I got it running....

Jiten

-----Original Message-----
From: Craig R. McClanahan [mailto:craigmcc@apache.org]
Sent: Thursday, June 14, 2001 6:21 PM
To: struts-user@jakarta.apache.org
Subject: RE: need some help.......


There was a string of nightly builds of Struts a couple of months ago
where the iterate tag had a bug (not creating the "id" item).  This was
fixed -- are you trying this with a recent build like 1.0-b3?

Craig


On Thu, 14 Jun 2001, Niall Pemberton wrote:

> need some help.......Mmmmm...the iterator doesn't appear to be creating
your
> "jas" bean from the elements of your array - the question is why?
>
> 1) Have you defined the logic taglib at the top of your jsp?
>    <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
>
> 2) Does the array returned by your getMbeanOper() method contain any
nulls?
>
> Also...I've just noticed...are you saying the getAttr() method returns a
> String array - meaning you have a grid situation? If so you need an
iterate
> within an iterate. Haven't done that but there are messages in the archive
> which talk about it.
>
> Niall
>
>   -----Original Message-----
>   From: Jiten Mohanty [mailto:jiten.mohanty@ipseal.com]
>   Sent: 15 June 2001 00:30
>   To: struts-user@jakarta.apache.org
>   Subject: RE: need some help.......
>
>
>   Niall
>   Thanks for a quick response.I tried but got the following error.....
>
>   javax.servlet.ServletException: Cannot find bean jas in scope null
>
>   Jiten
>     -----Original Message-----
>     From: Niall Pemberton [mailto:niall.pemberton@btInternet.com]
>     Sent: Wednesday, June 13, 2001 5:18 PM
>     To: struts-user@jakarta.apache.org
>     Subject: RE: need some help.......
>
>
>     "jas" is not in "session" scope - the iterator is creating it for each
> iteration (must be page scope?) - try it without the "scope":
>
>     <bean:write name="jas" property="attr"/>
>
>     Niall
>
>      -----Original Message-----
>     From: Jiten Mohanty [mailto:jiten.mohanty@ipseal.com]
>     Sent: 14 June 2001 23:57
>     To: struts-user@jakarta.apache.org
>     Subject: need some help.......
>
>
>       Hi folks
>
>       I am trying to iterate through a array of objects.Here is the
> code......
>
>       <logic:iterate id="jas" name="countBeanForm" property="mbeanOper"
> type="Ipseal.JbossOperationForm" scope="session">
>               <td align="center">
>
>                       <bean:write name="jas" property="attr"
> scope="session"/>
>
>
>               </td>
>       </logic:iterate>
>
>       property "mbeanOper" : returns array[objects]
>
>       Each Object has a property called Attr[String](set & get).I want to
> display the each String in Attr[ ].Whe I run the code, i get the following
> error......
>
>       Error: 500
>       Location: /ipseal_demo/bean_count.jsp
>       Internal Servlet Error:
>       javax.servlet.ServletException: Cannot find bean jas in scope
session
>               at
>
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImp
> l.java:459)
>               at
>
_0002fbean_0005fcount_0002ejspbean_0005fcount_jsp_44._jspService(_0002fbean_
> 0005fcount_0002ejspbean_0005fcount_jsp_44.java:299)
>
>               at
> org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:119)
>        and on......
>
>       Can some body help on this.....
>
>       Jiten
>       Software Enginer
>
>


RE: need some help.......

Posted by "Craig R. McClanahan" <cr...@apache.org>.
There was a string of nightly builds of Struts a couple of months ago
where the iterate tag had a bug (not creating the "id" item).  This was
fixed -- are you trying this with a recent build like 1.0-b3?

Craig


On Thu, 14 Jun 2001, Niall Pemberton wrote:

> need some help.......Mmmmm...the iterator doesn't appear to be creating your
> "jas" bean from the elements of your array - the question is why?
> 
> 1) Have you defined the logic taglib at the top of your jsp?
>    <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
> 
> 2) Does the array returned by your getMbeanOper() method contain any nulls?
> 
> Also...I've just noticed...are you saying the getAttr() method returns a
> String array - meaning you have a grid situation? If so you need an iterate
> within an iterate. Haven't done that but there are messages in the archive
> which talk about it.
> 
> Niall
> 
>   -----Original Message-----
>   From: Jiten Mohanty [mailto:jiten.mohanty@ipseal.com]
>   Sent: 15 June 2001 00:30
>   To: struts-user@jakarta.apache.org
>   Subject: RE: need some help.......
> 
> 
>   Niall
>   Thanks for a quick response.I tried but got the following error.....
> 
>   javax.servlet.ServletException: Cannot find bean jas in scope null
> 
>   Jiten
>     -----Original Message-----
>     From: Niall Pemberton [mailto:niall.pemberton@btInternet.com]
>     Sent: Wednesday, June 13, 2001 5:18 PM
>     To: struts-user@jakarta.apache.org
>     Subject: RE: need some help.......
> 
> 
>     "jas" is not in "session" scope - the iterator is creating it for each
> iteration (must be page scope?) - try it without the "scope":
> 
>     <bean:write name="jas" property="attr"/>
> 
>     Niall
> 
>      -----Original Message-----
>     From: Jiten Mohanty [mailto:jiten.mohanty@ipseal.com]
>     Sent: 14 June 2001 23:57
>     To: struts-user@jakarta.apache.org
>     Subject: need some help.......
> 
> 
>       Hi folks
> 
>       I am trying to iterate through a array of objects.Here is the
> code......
> 
>       <logic:iterate id="jas" name="countBeanForm" property="mbeanOper"
> type="Ipseal.JbossOperationForm" scope="session">
>               <td align="center">
> 
>                       <bean:write name="jas" property="attr"
> scope="session"/>
> 
> 
>               </td>
>       </logic:iterate>
> 
>       property "mbeanOper" : returns array[objects]
> 
>       Each Object has a property called Attr[String](set & get).I want to
> display the each String in Attr[ ].Whe I run the code, i get the following
> error......
> 
>       Error: 500
>       Location: /ipseal_demo/bean_count.jsp
>       Internal Servlet Error:
>       javax.servlet.ServletException: Cannot find bean jas in scope session
>               at
> org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImp
> l.java:459)
>               at
> _0002fbean_0005fcount_0002ejspbean_0005fcount_jsp_44._jspService(_0002fbean_
> 0005fcount_0002ejspbean_0005fcount_jsp_44.java:299)
> 
>               at
> org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:119)
>        and on......
> 
>       Can some body help on this.....
> 
>       Jiten
>       Software Enginer
> 
> 


RE: need some help.......

Posted by Jiten Mohanty <ji...@ipseal.com>.
Hey Niall,

You are the man......I got it running.Your suggestion about the nested
iteration worked fine.......Thanks buddy.I was trying hard to get this
running.Saved my day.....
Have a nice evening.

Jiten
Soft. Engineer
Ipseal Inc.
Denver, Colorado

-----Original Message-----
From: Niall Pemberton [mailto:niall.pemberton@btInternet.com]
Sent: Wednesday, June 13, 2001 6:08 PM
To: struts-user@jakarta.apache.org
Subject: RE: need some help.......


Mmmmm...the iterator doesn't appear to be creating your "jas" bean from the
elements of your array - the question is why?

1) Have you defined the logic taglib at the top of your jsp?
   <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>

2) Does the array returned by your getMbeanOper() method contain any nulls?

Also...I've just noticed...are you saying the getAttr() method returns a
String array - meaning you have a grid situation? If so you need an iterate
within an iterate. Haven't done that but there are messages in the archive
which talk about it.

Niall


-----Original Message-----
From: Jiten Mohanty [mailto:jiten.mohanty@ipseal.com]
Sent: 15 June 2001 00:30
To: struts-user@jakarta.apache.org
Subject: RE: need some help.......


Niall
Thanks for a quick response.I tried but got the following error.....

javax.servlet.ServletException: Cannot find bean jas in scope null

Jiten

-----Original Message-----
From: Niall Pemberton [mailto:niall.pemberton@btInternet.com]
Sent: Wednesday, June 13, 2001 5:18 PM
To: struts-user@jakarta.apache.org
Subject: RE: need some help.......


"jas" is not in "session" scope - the iterator is creating it for each
iteration (must be page scope?) - try it without the "scope":

<bean:write name="jas" property="attr"/>

Niall

 -----Original Message-----
From: Jiten Mohanty [mailto:jiten.mohanty@ipseal.com]
Sent: 14 June 2001 23:57
To: struts-user@jakarta.apache.org
Subject: need some help.......



Hi folks

I am trying to iterate through a array of objects.Here is the code......

<logic:iterate id="jas" name="countBeanForm" property="mbeanOper"
type="Ipseal.JbossOperationForm" scope="session">
        <td align="center">

                <bean:write name="jas" property="attr" scope="session"/>


        </td>
</logic:iterate>

property "mbeanOper" : returns array[objects]

Each Object has a property called Attr[String](set & get).I want to display
the each String in Attr[ ].Whe I run the code, i get the following
error......

Error: 500
Location: /ipseal_demo/bean_count.jsp
Internal Servlet Error:
javax.servlet.ServletException: Cannot find bean jas in scope session
        at
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImp
l.java:459)
        at
_0002fbean_0005fcount_0002ejspbean_0005fcount_jsp_44._jspService(_0002fbean_
0005fcount_0002ejspbean_0005fcount_jsp_44.java:299)

        at
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:119)
 and on......

Can some body help on this.....

Jiten
Software Enginer


RE: need some help.......

Posted by Niall Pemberton <ni...@btInternet.com>.
need some help.......Mmmmm...the iterator doesn't appear to be creating your
"jas" bean from the elements of your array - the question is why?

1) Have you defined the logic taglib at the top of your jsp?
   <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>

2) Does the array returned by your getMbeanOper() method contain any nulls?

Also...I've just noticed...are you saying the getAttr() method returns a
String array - meaning you have a grid situation? If so you need an iterate
within an iterate. Haven't done that but there are messages in the archive
which talk about it.

Niall

  -----Original Message-----
  From: Jiten Mohanty [mailto:jiten.mohanty@ipseal.com]
  Sent: 15 June 2001 00:30
  To: struts-user@jakarta.apache.org
  Subject: RE: need some help.......


  Niall
  Thanks for a quick response.I tried but got the following error.....

  javax.servlet.ServletException: Cannot find bean jas in scope null

  Jiten
    -----Original Message-----
    From: Niall Pemberton [mailto:niall.pemberton@btInternet.com]
    Sent: Wednesday, June 13, 2001 5:18 PM
    To: struts-user@jakarta.apache.org
    Subject: RE: need some help.......


    "jas" is not in "session" scope - the iterator is creating it for each
iteration (must be page scope?) - try it without the "scope":

    <bean:write name="jas" property="attr"/>

    Niall

     -----Original Message-----
    From: Jiten Mohanty [mailto:jiten.mohanty@ipseal.com]
    Sent: 14 June 2001 23:57
    To: struts-user@jakarta.apache.org
    Subject: need some help.......


      Hi folks

      I am trying to iterate through a array of objects.Here is the
code......

      <logic:iterate id="jas" name="countBeanForm" property="mbeanOper"
type="Ipseal.JbossOperationForm" scope="session">
              <td align="center">

                      <bean:write name="jas" property="attr"
scope="session"/>


              </td>
      </logic:iterate>

      property "mbeanOper" : returns array[objects]

      Each Object has a property called Attr[String](set & get).I want to
display the each String in Attr[ ].Whe I run the code, i get the following
error......

      Error: 500
      Location: /ipseal_demo/bean_count.jsp
      Internal Servlet Error:
      javax.servlet.ServletException: Cannot find bean jas in scope session
              at
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImp
l.java:459)
              at
_0002fbean_0005fcount_0002ejspbean_0005fcount_jsp_44._jspService(_0002fbean_
0005fcount_0002ejspbean_0005fcount_jsp_44.java:299)

              at
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:119)
       and on......

      Can some body help on this.....

      Jiten
      Software Enginer


RE: need some help.......

Posted by Jiten Mohanty <ji...@ipseal.com>.
Niall
Thanks for a quick response.I tried but got the following error.....

javax.servlet.ServletException: Cannot find bean jas in scope null

Jiten

-----Original Message-----
From: Niall Pemberton [mailto:niall.pemberton@btInternet.com]
Sent: Wednesday, June 13, 2001 5:18 PM
To: struts-user@jakarta.apache.org
Subject: RE: need some help.......


"jas" is not in "session" scope - the iterator is creating it for each
iteration (must be page scope?) - try it without the "scope":

<bean:write name="jas" property="attr"/>

Niall

 -----Original Message-----
From: Jiten Mohanty [mailto:jiten.mohanty@ipseal.com]
Sent: 14 June 2001 23:57
To: struts-user@jakarta.apache.org
Subject: need some help.......



Hi folks

I am trying to iterate through a array of objects.Here is the code......

<logic:iterate id="jas" name="countBeanForm" property="mbeanOper"
type="Ipseal.JbossOperationForm" scope="session">
        <td align="center">

                <bean:write name="jas" property="attr" scope="session"/>


        </td>
</logic:iterate>

property "mbeanOper" : returns array[objects]

Each Object has a property called Attr[String](set & get).I want to display
the each String in Attr[ ].Whe I run the code, i get the following
error......

Error: 500
Location: /ipseal_demo/bean_count.jsp
Internal Servlet Error:
javax.servlet.ServletException: Cannot find bean jas in scope session
        at
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImp
l.java:459)
        at
_0002fbean_0005fcount_0002ejspbean_0005fcount_jsp_44._jspService(_0002fbean_
0005fcount_0002ejspbean_0005fcount_jsp_44.java:299)

        at
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:119)
 and on......

Can some body help on this.....

Jiten
Software Enginer