有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

是否可以使用java方法返回“如果条件满足,则返回列表,否则返回错误消息”

我知道在Java中,一个方法只能返回一种返回类型。。。但如果有任何可能性,请告诉我。从下面的方法中,如果条件满足,我将尝试返回一个列表,否则我将尝试返回一条错误消息

这是我的代码:

@RequestMapping(value = "/getcompanies", method = RequestMethod.POST)
public List<CompanyMaster> getCompanies(@RequestBody UserDetails user) {
    String OrgLoginId = user.getOrgLoginId();
    String password = user.getuPassword();
    String checkLoginId = null;
    String uPassword = null;
    String encPassword = null;
    String loginId = null;
    String checkAuthorized = null;
    //  String loginId=userService.getLoginId(OrgLoginId);
    List<Object[]> CheckIdPassword = userService.checkLoginId(OrgLoginId);
    List<Object[]> results = CheckIdPassword;
    for (Object[] obj : results) {
        checkLoginId = obj[0].toString();
        if (null == obj[1]) {
            uPassword = "";
        } else {
            uPassword = obj[1].toString();
        }
        loginId = obj[2].toString();
    }
    checkAuthorized = loginId.substring(0, 3);
    if (null != password) {
        MD5 md5 = new MD5();
        encPassword = md5.getPassword(password);
    }
    if (checkLoginId == null) {
        return "Incorrect loginId..Please enter valid loginId";
    } else if (encPassword.equals(uPassword)) {
        if (checkAuthorized.equals("STE")) {
            List<CompanyMaster> companyList = userService.getCompanyList(OrgLoginId);
            return companyList;
        } else {
            return "You are not Authorized";
        }
    } else {
        return "Incorrect Password";
    }

共 (2) 个答案

  1. # 1 楼答案

    您可以通过创建一个新的presenter类来实现这一点,该类包含类型字符串的列表和状态,并将getCompanies方法的返回类型更改为presenter类,如

    public CompaniesPresenter getCompanies()
    

    你公司的Presenter类应该是这样的

        public class CompaniesPresenter {
        private List<CompanyMaster> companyMaster;
        private string status;
    
    //default constructor
    public CompaniesPresenter(){
    
        }
    
    //parameterized constructor to return only string in exception case
    
    public CompaniesPresenter(Stirng status){
            this.status = status;
        }
    
    //parametirized constructor to return success case
    public CompaniesPresenter(List<CompanyMaster> companyMaster, Stirng status){
            this.companyMaster = companyMaster;
            this.status = status;
        }
    
        //getters and setters
        }
    

    这就是你更新的方法lokks的风格

    @RequestMapping(value = "/getcompanies", method = RequestMethod.POST)
        public CompaniesPresenter getCompanies(@RequestBody UserDetails user) {
            String OrgLoginId = user.getOrgLoginId();
            String password = user.getuPassword();
            String checkLoginId = null;
            String uPassword = null;
            String encPassword = null;
            String loginId = null;
            String checkAuthorized = null;
            //  String loginId=userService.getLoginId(OrgLoginId);
            List<Object[]> CheckIdPassword = userService.checkLoginId(OrgLoginId);
            List<Object[]> results = CheckIdPassword;
            for (Object[] obj : results) {
                checkLoginId = obj[0].toString();
                if (null == obj[1]) {
                    uPassword = "";
                } else {
                    uPassword = obj[1].toString();
                }
                loginId = obj[2].toString();
            }
            checkAuthorized = loginId.substring(0, 3);
            if (null != password) {
                MD5 md5 = new MD5();
                encPassword = md5.getPassword(password);
            }
            if (checkLoginId == null) {
                return new CompaniesPresenter("Incorrect loginId..Please enter valid loginId");
    
            } else if (encPassword.equals(uPassword)) {
                if (checkAuthorized.equals("STE")) {
                    List<CompanyMaster> companyList = userService.getCompanyList(OrgLoginId);
                    return new CompaniesPresenter(companyList,"success");
                } else {
                    return new CompaniesPresenter("You are not Authorized");
                }
            } else {
                return new CompaniesPresenter("Incorrect Password");
            }
    

    这没有经过测试,请确保有任何编译错误

  2. # 2 楼答案

    使用自定义异常是最合理的解决方案。然而,仅为一种情况创建自定义异常并不总是理想的。 另一种解决方案是从方法返回空列表,检查servlet中的列表是否为空(或从何处调用此方法),并在那里显示错误消息。 似乎您希望针对不同的情况返回多条错误消息。在这种情况下,建议使用自定义异常解决方案。如果不喜欢自定义异常,可以返回List<Object>并将错误消息作为列表中的第一个元素填充。在获取该列表的地方,检查第一个元素是instanceOf{}还是CompanyMaster。根据它是什么,你可以执行你的操作。这是一个奇怪但可能的解决方案(只有在您不喜欢自定义异常的情况下)