Java报错:Unable to find setter method for attribute: [x]

在学习JavaWeb JSTL与自定义标签时遇到的坑,用的老师给的代码结果直接原地报错:javax.servlet.ServletException: org.apache.jasper.JasperException: /math.jsp (line: [15], column: [0]) Unable to find setter method for attribute: [x], 代码如下

package com.sirifeng.mytag;

import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.SimpleTagSupport;
import java.io.IOException;

/**
 * @author SiriFeng
 */
public class MathTag extends SimpleTagSupport {

    double x;

    public double getX() {
        return x;
    }

    public void setX(String x) {
        double num = 0;
        num = Double.parseDouble(x);
        this.x = num;
    }

    @Override
    public void doTag() throws IOException {
        JspWriter out = getJspContext().getOut();
        out.println(x+"的平方根是:"+Math.sqrt(x));
    }

}

报错说找不到属性x的setter方法,这里看了一下x的属性类型是double,setter方法的属性类型是String,应该是这里出现的问题,我把setter方法改成默认的setter方法后就能正常运行了,修改如下:

package com.sirifeng.mytag;

import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.SimpleTagSupport;
import java.io.IOException;

/**
 * @author SiriFeng
 */
public class MathTag extends SimpleTagSupport {

    double x;

    public double getX() {
        return x;
    }

    public void setX(double x) {
        this.x = x;
    }

    @Override
    public void doTag() throws IOException {
        JspWriter out = getJspContext().getOut();
        out.println(x+"的平方根是:"+Math.sqrt(x));
    }

}

 这里有个疑问就是从jsp传过来的值是String,但是这边调用setter方法的参数类型是double,中间哪个过程它自己把类型给转化了?求大佬指点。

原文地址:https://www.cnblogs.com/Fzeng/p/13993729.html