Значение атрибута класса useBean недопустимо - PullRequest
1 голос
/ 27 ноября 2011

Я новичок в JSP и пытаюсь просто вычислить мощность.Итак, я беру 2 числа от пользователя, а потом получаю результат расчета и показываю на странице.Вот мой класс бобов:

package org.mypackage.power;

public class MyPow {

    private double base;
    private double pow;
    private double result;

    MyPow()
    {
        base = 0;
        pow=1;
    }

    /**
     * @return the base
     */
    public double getBase() {
        return base;
    }

    /**
     * @param base the base to set
     */
    public void setBase(double base) {
        this.base = base;
    }

    /**
     * @return the pow
     */
    public double getPow() {
        return pow;
    }

    /**
     * @param pow the pow to set
     */
    public void setPow(double pow) {
        this.pow = pow;
    }


    /**
     * @return the result
     */
    public double getResult() {
       return Math.pow(base, pow);
    }

    /**
     * @param result the result to set
     */
    public void setResult(double result) {
        this.result = result;
    }
}

А вот страница индекса:

<HTML>
<BODY>
<FORM METHOD=POST ACTION="result.jsp">
What's your base? <INPUT TYPE=TEXT NAME=base SIZE=20>
What is your power <INPUT TYPE=TEXT NAME=power SIZE=10>

<P><INPUT TYPE=SUBMIT>
</FORM>
</BODY>
</HTML>

А вот страница JSP, которая покажет результат

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <h1>Hello World!</h1>
        <jsp:useBean id="powerBean" scope="session" class="org.mypackage.power.MyPow" />
        <jsp:setProperty name="powerBean" property="*"/>
        <jsp:getProperty name="powerBean" property="result"/>
    </body>
</html>

И этот код дает

Значение атрибута класса useBean недопустимо

Мой класс находится в пакете the org.mypackage.power.MyPow.До того, как я обновил это, это был простой привет мир и работал правильно.Но я просто меняю класс, добавляю новые поля и меняю страницу JSP.Может ли кто-нибудь помочь мне, пожалуйста?

Я использую Tomcat 7.0.14 и Netbeans 7.01

Ответы [ 3 ]

5 голосов
/ 27 ноября 2011

Эта ошибка в основном означает, что

MyPow powerBean = new MyPow();

не удалось.

Бины должны иметь конструктор public. Итак, измените пакет-приватный конструктор

MyPow() {
    // ...
}

публичному конструктору

public MyPow() {
    // ...
}

Таким образом, JSP (который сам по себе находится в другом пакете) сможет получить доступ и вызвать конструктор bean-компонента.

1 голос
/ 21 декабря 2012

Вам нужно только перезапустить Tomcat.Это решит вашу проблему.Самый простой способ из корневого каталога Tomcat (Mac или Linux):

$ ./bin/shutdown.sh

$ ./bin/startup.sh

InWindows это должно быть с .bat файлами ...

0 голосов
/ 10 июня 2014
public User() {
    super();
}

После добавления конструктора по умолчанию он работал без ошибок

...