0

JSP ページで関数変数の値を出力しようとしています。関数変数は java.class(com.project.bulk) にあります。ファイル名はbulk.classです。JSPファイルに以下のコードを書いて変数を読み取ろうとしましたが、うまくいきませんでした。何か助けてください。

<%@ page import="com.project.bulk.bulk" %>

<%=bulk.cellStoreVector %>

// 関数コードは以下

private static void printCellDataToConsole(Vector dataHolder) {

            for (int i = 0; i < dataHolder.size(); i++) {
                    Vector  cellStoreVector  = (Vector) dataHolder.elementAt(i);
                    System.out.println(cellStoreVector);
                    for (int j = 0; j < cellStoreVector.size(); j++) {
                          HSSFCell myCell = (HSSFCell) cellStoreVector.elementAt(j);
                          String stringCellValue = myCell.toString();
                         // System.out.print(stringCellValue + "\t\t");
                    }
                    System.out.println();
            }
    }
4

1 に答える 1

2

そのメソッドまたはそれが定義されているブロックの外部のローカル変数にアクセスすることはできません。ローカル変数のスコープは、それが定義されているブロックに限定されます。

以下の宣言はfor-loop、それが宣言されている場所にローカルです。現在の方法でも、の外部からはアクセスできませんfor-loop。ループscopeがこの変数へのアクセスを定義したため:-

Vector  cellStoreVector  = (Vector) dataHolder.elementAt(i);

JSPの外部でアクセスするには、classそのフィールドをクラスのプライベートインスタンス変数として宣言します。そしてpublic、そのフィールドの値を返すアクセサメソッドがあります。次に、JSPで、そのメソッドを呼び出して特定のインスタンスの値を取得できます。

instanceクラスのでそのメソッドにアクセスする必要があることを忘れないでください。から直接ここにアクセスしていますclass name。そのようにアクセスしたい場合は、static変数が必要です。

これが私が上で言ったことすべてをカバーする簡単な例です:-

public class Dog {

    // Private Instance variable
    private int instanceVar; // Defaulted to 0

    // Private Static variable
    // Common for all instances
    private static String name = "rohit";


    // Public accessor
    public int getInstanceVar() {
        return this.instanceVar;
    }

    public void setInstanceVar(int instanceVar) {
        this.instanceVar = instanceVar;
    }

    // Static public accessor for static variable
    public static String getName() {
        return name;
    }

}

class Test {
    public static void main(String[] args) {
        // Access static method through class name
        System.out.println(Dog.getName()); 

        Dog dog = new Dog();

        // Set instance variable through public accessor, on a particular instance
        dog.setInstanceVar(10);

        // Get instance variable value and asssign to local variable x
        // x is local variable in `main`
        int x = dog.getInstanceVar(); 

        showX(); 
    }

    public static void showX() {

        // x not visible here.
        System.out.println(x);  // Will not compile
    }
}
于 2012-10-15T11:54:06.980 に答える