Как перезагрузить JSP со значениями request.getAttribute - PullRequest
0 голосов
/ 01 января 2012

У меня есть это приложение, где я хочу заполнить текстовый файл на основе записей, введенных из пользовательского интерфейса. Для этого я выбрал Struts1 и смог выполнить большинство функций. Но часть продолжения заполнения текстовый файл на основе пользовательских записей в моем JSP - это то, с чем я борюсь. Ниже приведен поток страниц в пользовательском интерфейсе

1. «Принимать записи пользователя» http://www.image -share.com / ijpg-1178-104.html 2. 'Попросите данные сканирования на основе записей на странице 1' http://www.image -share.com / ijpg-1178-105.html 3. Подать после ввода скандата. 'http://www.image -share.com / ijpg-1178-106.html (Мне удалось выправить нулевые значения в изображениях с помощью переменных сеанса. Спасибо Дейву) сообщение замечено с пустыми записями как эта Проверка сообщения. Мои вопросы: Что следует использовать, чтобы был сценарий, когда пользователи вводят данные сканирования на стр. 2 и могут продолжать вводить больше значений данных сканирования, возвращаясь к той же JSP. Я думал о том, как перезагрузить страницу с помощью JavaScript по нажатию кнопки. Это правильный подход?

Соответствующий код для этого

 <html:form action="txtwriter">    
  <% String itemname = (String)session.getAttribute("itemname");   %> 
 <% String lotnumber = (String)session.getAttribute("lotnumber");   %>
 <% String godownname = (String)session.getAttribute("godownname");  %> 
 <br/>  
 <% String message = (String)session.getAttribute("message");    
 session.setAttribute( "theFileName", message );  %>  
  Filename : <%= message %>  
 <br/>  Item Name :<%= itemname %>
  <br/> Lot Number :<%= lotnumber %> 
   <br/>    Godown Name :<%= godownname %>  
 <br/>    <bean:message key="label.scandata"/> 
 <html:text property="scanData" ></html:text>    
 <html:errors property="scanData"/> 
 <br/>     
<html:submit/> 
  /* How should the submit button handle the onClick event so that when the users click  
  after entering the text.
 1. The entered text must be populated in the text file using a different action class.  (I have    this part working) 
  2.They must be on the same jsp with the scanData text box cleared waiting for the next  user      entry into that text 
 box so that this subsequest entry can also be entered into the text file. 
 Is there a way i can empty the 'scanData' textbox by accessing it by name inside my action so that i can empty it from my action class?
 (I am looking for this     answer)

* /


Я использовал это внутри LoginAction.java

HttpSession session = request.getSession();   
session.setAttribute("message", textFile);   
session.setAttribute("itemname",loginForm.getItemName().trim());   
session.setAttribute("lotnumber",loginForm.getLotNumber().trim());    
session.setAttribute("godownname",loginForm.getStockGodown().trim());    

1 Ответ

0 голосов
/ 01 января 2012

(Не ответ; переработанный, но непроверенный код для других, пытающихся помочь.)

Это измененное действие, облегчающее понимание того, что на самом деле происходит;исходный код трудно рассуждатьФункциональность trim() перенесена в установщики форм действий, чтобы избежать избыточности.

public class LoginAction extends Action {

    public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        LoginForm loginForm = (LoginForm) form;
        if (invalidForm(loginForm)) {
            return mapping.findForward("failure");
        }

        String fileName = createFile(loginForm);

        request.setAttribute("message", fileName);
        request.setAttribute("itemname", loginForm.getItemName());
        request.setAttribute("lotnumber", loginForm.getLotNumber());
        request.setAttribute("godownname", loginForm.getStockGodown());

        return mapping.findForward("success");
    }

    private String createFile(LoginForm loginForm) throws IOException {
        ServletContext context = getServlet().getServletContext();
        String driveName = context.getInitParameter("drive").trim();
        String folderName = context.getInitParameter("foldername").trim();

        String pathName = driveName + ":/" + folderName;
        new File(pathName).mkdirs();

        String fileNamePath = pathName + createFileName(loginForm);
        ensureFileExists(fileNamePath);

        return fileNamePath;
    }

    private void ensureFileExists(String fileNamePath) throws IOException {
        boolean fileExists = new File(fileNamePath).exists();
        if (!fileExists) {
            File file = new File(fileNamePath);
            file.createNewFile();
        }
    }

    private boolean invalidForm(LoginForm loginForm) {
        return loginForm.getItemName().equals("")
                || loginForm.getLotNumber().equals("")
                || loginForm.getStockGodown().equals("");
    }

    private String createFileName(LoginForm loginForm) {
        return loginForm.getItemName() + "_"
                + loginForm.getLotNumber() + "_"
                + loginForm.getStockGodown() + "_"
                + createFileNameTimeStamp() + ".txt";
    }

    private String createFileNameTimeStamp() {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd G 'at' hh.mm.ss z");
        String dateTime = sdf.format(Calendar.getInstance().getTime());
        String[] tempDateStore = dateTime.split("AD at");
        return tempDateStore[0].trim() + "_" + tempDateStore[1].trim();
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...