-1

“未解决的编译问题:局部变量输入可能尚未初始化局部变量成功可能尚未初始化局部变量输入可能尚未初始化”我一直在尝试用 3 个输入填充我的数据库,我很新MySQl 中的 struts2 框架,因此任何类型的见解或输入都会非常有帮助。我是否包含了足够的代码信息?这是我的 ActionClass。

<pre> package com.tutorialspoint.struts2;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import com.opensymphony.xwork2.ActionSupport;

public class HelloWorldAction extends ActionSupport{

    private String osName;
    private String version;
    private String notes;



    public String execute() throws Exception {

        String input;
        String success;
        String ret = input;
        Connection conn = null;

        try{
            String URL = "jdbc:mysql://localhost/HelloWorld";
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection(URL, "root", "");
            String sql = "SELECT osName FROM entry WHERE";
            sql+=" osName = ? AND version = ?";
            PreparedStatement ps = conn.prepareStatement(sql);
            ps.setString(1, osName);
            ps.setString(2, version);
            ResultSet rs = ps.executeQuery();

            while (rs.next()) {
                notes = rs.getString(1);
                ret = success;
            }
        }catch (Exception e) {
            ret = input;
        } finally {
            if (conn != null) {
                try {
                    conn.close();
                } catch (Exception e) {
                }
            }
        }

        return ret;
    }


        public String getOsName() {
        return osName;
    }
    public void setOsName(String osName) {
        this.osName = osName;
    }
    public String getVersion() {
        return version;
    }
    public void setVersion(String version) {
        this.version = version;
    }
    public String getNotes() {
        return notes;
    }
    public void setNotes(String notes) {
        this.notes = notes;
    }

    public void validate()
    {
        if (osName == null || osName.trim().equals(""))
        { 
            addFieldError("osName","The OS name is required");
        }
        if (version == null || version.trim().equals(""))
        {
            addFieldError("version","The OS version is required");
        }
    }
}
4

2 回答 2

1

你的inputsuccess是局部变量,没有默认值。当你上线ret = input时,你还没有放任何东西input,所以这个分配没有意义。同样的事情ret = success; 您永远不会为方法中的任何位置分配任何值success

于 2015-01-18T01:41:23.437 回答
1

SUCCESS, ERROR, INPUT,NONE和是接口LOGIN中定义的预定义框架常量,由类实现,您的操作扩展。ActionActionSupport

因此,撇开您没有初始化变量的事实(您应该做的是:

private String success = "success";
private String input   = "input";

),它们是绝对不需要的,因为您可以返回常量值:

ret = SUCCESS;
...
ret = INPUT;

或者,当不扩展 ActionSupport 时,文字值:

ret = "success";
...
ret = "input";

最好使用常量以避免拼写错误。

于 2015-01-19T09:55:10.930 回答