我正在尝试在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();
}
}
答案 0 :(得分: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
}
}