Java PlayFramework如何从超级控制器访问列表
我正在完成我的大学项目,但我遇到了奇怪的问题。因为我是一名学生,如果是平淡无奇的话,请立即道歉。 我有我的BasicCommonController,它有列表backendErrors=newArrayList() ,我有另一个扩展BasicCommonController的控制器,我可以从BasicCommonController访问backendErrors列表,但我不能 要将新元素放入列表,wchich始终为空。我曾尝试通过super.backendErrors访问,但它也不起作用。Java PlayFramework如何从超级控制器访问列表,java,controller,superclass,Java,Controller,Superclass,我正在完成我的大学项目,但我遇到了奇怪的问题。因为我是一名学生,如果是平淡无奇的话,请立即道歉。 我有我的BasicCommonController,它有列表backendErrors=newArrayList() ,我有另一个扩展BasicCommonController的控制器,我可以从BasicCommonController访问backendErrors列表,但我不能 要将新元素放入列表,wchich始终为空。我曾尝试通过super.backendErrors访问,但它也不起作用。 如何
如何向super.backendErrors添加一些错误并在其他控制器中访问它这是抽象控制器:
package controllers;
import org.apache.commons.lang3.StringUtils;
import play.Logger;
import play.Play;
import play.mvc.Controller;
import java.util.ArrayList;
import java.util.List;
/**
* Created by vv on 22.04.2017.
*/
public class BasicAbstractController extends Controller {
public static final String GO_HOME = "/";
public List<String> backendErrors = new ArrayList<>();
public static String getPlaceToObserve(){
String place = Play.application().configuration().getString("storage.place");
if(StringUtils.isNotBlank(place)){
return place;
}
return StringUtils.EMPTY;
}
public static String getServerInstance(){
String instance = Play.application().configuration().getString("storage.place");
if(StringUtils.isNotBlank(instance)){
return instance;
}
return StringUtils.EMPTY;
}
}
包控制器;
导入org.apache.commons.lang3.StringUtils;
导入play.Logger;
输入play.play;
导入play.mvc.Controller;
导入java.util.ArrayList;
导入java.util.List;
/**
*由vv于2017年4月22日创建。
*/
公共类BasicAbstractController扩展控制器{
公共静态最终字符串GO_HOME=“/”;
public List backendErrors=new ArrayList();
公共静态字符串getPlaceToObserve(){
字符串位置=Play.application().configuration().getString(“storage.place”);
if(StringUtils.isNotBlank(place)){
返回地点;
}
返回StringUtils.EMPTY;
}
公共静态字符串getServerInstance(){
String实例=Play.application().configuration().getString(“storage.place”);
if(StringUtils.isNotBlank(实例)){
返回实例;
}
返回StringUtils.EMPTY;
}
}
这是一个示例控制器
package controllers;
import com.google.common.io.Files;
import com.sun.org.apache.regexp.internal.RE;
import constans.AppCommunicates;
import play.Logger;
import play.mvc.Http;
import play.mvc.Result;
import util.FileUtil;
import java.io.File;
import java.io.IOException;
import java.util.List;
/**
* Created by vv on 22.04.2017.
*/
public class FileUploadController extends BasicAbstractController {
public Result upload() {
Http.MultipartFormData<File> body = request().body().asMultipartFormData();
Http.MultipartFormData.FilePart<File> picture = body.getFile("picture");
if (picture != null) {
String fileName = picture.getFilename();
String contentType = picture.getContentType();
File file = picture.getFile();
File fileToSave = new File(getPlaceToObserve() + "/" + picture.getFilename());
try{
Files.copy(file,fileToSave);
}
catch (IOException ioe){
Logger.error("Unable to write file");
}
Logger.error("File Handled Cuccessfully");
return redirect(GO_HOME);
} else {
flash("error", "Missing file");
return badRequest();
}
}
public Result delete(String fileName){
List<File> files = FileUtil.getCurrentFileNames();
File fileToDelete = null;
for (File file : files) {
if(file.getName().equals(fileName)){
fileToDelete = file;
break;
}
}
boolean deletionResult = FileUtil.deleteGivenFile(fileToDelete);
if(!deletionResult){
// i am not able to add smthg here
backendErrors.add(AppCommunicates.UNABLE_TO_DELETE_FILE);
}
return redirect(GO_HOME);
}
}
包控制器;
导入com.google.common.io.Files;
导入com.sun.org.apache.regexp.internal.RE;
进口康斯坦斯;
导入play.Logger;
导入play.mvc.Http;
导入play.mvc.Result;
导入util.FileUtil;
导入java.io.File;
导入java.io.IOException;
导入java.util.List;
/**
*由vv于2017年4月22日创建。
*/
公共类FileUploadController扩展了BasicAbstractController{
公共结果上载(){
Http.MultipartFormData body=request().body().asMultipartFormData();
Http.MultipartFormData.FilePart picture=body.getFile(“picture”);
如果(图片!=null){
字符串文件名=picture.getFilename();
字符串contentType=picture.getContentType();
File File=picture.getFile();
File fileToSave=新文件(getPlaceToObserve()+“/”+picture.getFilename());
试一试{
文件。复制(文件,文件保存);
}
捕获(ioe异常ioe){
Logger.error(“无法写入文件”);
}
Logger.error(“文件处理成功”);
返回重定向(回家);
}否则{
闪存(“错误”、“缺少文件”);
返回请求();
}
}
公共结果删除(字符串文件名){
List files=FileUtil.getCurrentFileNames();
File fileToDelete=null;
用于(文件:文件){
if(file.getName().equals(fileName)){
fileToDelete=文件;
打破
}
}
布尔deletionResult=FileUtil.deleteGivenFile(fileToDelete);
如果(!deletionResult){
//我无法在此添加smthg
backendErrors.add(AppCommunications.UNABLE\u TO\u DELETE\u文件);
}
返回重定向(回家);
}
}
我无法添加或访问其他控制器的列表请添加一些代码!