public String perform(HttpServletRequest request) {
		List<String> errors = new ArrayList<String>();
		request.setAttribute("errors", errors);

		try {
			CreateFundForm form = formBeanFactory.create(request);
			request.setAttribute("form", form);

			// If no params were passed, return with no errors so that the form
			// will be
			// presented (we assume for the first time).
			if (!form.isPresent()) {
				return "e_createFund.jsp";
			}

			// Any validation errors?
			
			errors.addAll(form.getValidationErrors());
			if (errors.size() != 0) {
				return "e_createFund.jsp";
			}
			
			if(fundDAO.checkFundByName(form.getFundname())){
				errors.add("the fund Name is already existed");
				return "e_createFund.jsp";
			}
			
			if(fundDAO.checkFundByTicker(form.getSymbol())){
				errors.add("the fund ticker is already existed");
				return "e_createFund.jsp";
			}
			// Look up the user
			FundBean fb = new FundBean();
			fb.setName(form.getFundname());
			fb.setSymbol(form.getSymbol());
			Transaction.begin();
			fundDAO.createAutoIncrement(fb);
			request.setAttribute("message", "the fund has been created");
			Transaction.commit();
			return "e_success.jsp";
		} catch (RollbackException e) {
			errors.add(e.getMessage());
			return "e_createFund.jsp";
		} catch (FormBeanException e) {
			errors.add(e.getMessage());
			return "e_createFund.jsp";
		} catch (Exception e) {
			errors.add(e.getMessage());
			return "e_createFund.jsp";
		} finally {
			if (Transaction.isActive())
				Transaction.rollback();
		}
	}