Две кнопки отправки, чтобы сделать две разные вещи - PullRequest
0 голосов
/ 02 октября 2018

Использование Thymeleaf, Spring-boot и Java.Когда я нажимаю любую из этих кнопок (перечисленных на той же форме / странице), она отправляет путь / send вместо своего направленного пути.Идеи?Для отправки необходимо нажать одну кнопку, перейти к / addPolicy и добавить некоторые элементы ввода на страницу.

    <form class="ui form" th:object="${directBind}"  method="post"  th:action="@{/send}" style="padding:0 10px;">
        <h4>Customer Setup</h4>
        <div class="row">
            <label >Contact Name (First/Last):</label>
            <input type="text" th:field="*{contactName}" required="true" />
        </div>
        <div class="row">
            <label for="formAddress">Address:</label>
            <input type="text" id="formAddress" th:field="*{formAddress}" required="true"/>
        </div>
        <div class="row">
            <label for="phoneNumber">Phone Number:</label>
            <input type="text" id="phoneNumber" th:field="*{phoneNumber}" required="true"/>
        </div>
        <div class="row">
            <label for="email">Email:</label>
            <input type="email" id="email" th:field="*{email}" required="true"/>
        </div>
        <div class="row">
            <label for="website" style="margin-top: 1em;"> Website:</label>
            <input type="text" id="website" th:field="*{website}" required="true"/>
        </div>
        <div class="row">
            <label for="nameInsured">Name Insured:</label>
            <input type="text" id="nameInsured" th:field="*{insuredName}" required="true"/>
        </div>
        <div class="row">
            <label>Business with Agency:</label>
            <div th:each="businessAgency : ${businessAgencies}">
                <input type="checkbox" th:field="*{businessAgencyList}" th:value="${businessAgency}"/>
                <label th:text="${businessAgency}">Business with Agency</label>
            </div>

        </div>
        <div class="row">
            <label for="executive">Executive:</label>
            <input type="text" id="executive" th:field="*{executive}" required="true"/>
        </div>
        <div class="row" style="display: inline-block;">
            <p>Service Level:</p>
            <ul>
                <li>
                    <label class="forCheckbox">
                        <input type="checkbox" th:field="*{serviceLevel}" required="true"/>
                        Affiliate Serviced</label>
                 </li>
            </ul>
        </div>
        <div class="row">
            <label for="affiliateRep">Affiliate Designated Representative:</label>
            <input type="text" id="affiliateRep" th:field="*{affiliateRep}" required="true" />
        </div>

        <div>
             <h4 style="display: inline;">AMS360 Policy Setup</h4>
             <button id="addPolicy" type="submit" name="addPolicy" class="btn btn-default" style="margin-left: 1rem; margin-bottom: 1rem;"><span class="fa fa-plus"></span></button>
        </div>
        <div class="col-sm-12">
            <hr/>

            <table class="table table-striped" data-classes="table-no-bordered" data-striped="true" data-show-columns="true" data-pagination="true">
                <thead>
                <tr>
                    <th>Policy Number</th>
                    <th>Policy Term Start Date</th>
                    <th>Policy Term End Date</th>
                    <th>Line of Coverage</th>
                    <th>Parent Company</th>
                    <th>Writing Company</th>
                    <th>Bill Type</th>
                    <th>Quote Premium</th>
                    <th>Commission</th>
                </tr>
                </thead>
                <tbody>
                <tr th:each="ams360Policy,stat : *{ams360Policies}">
                    <td> <input type="text" class="form-control" th:field="*{ams360Policies[__${stat.index}__].policyNumber}"/></td>
                    <td> <input type="text" class="form-control" th:field="*{ams360Policies[__${stat.index}__].policyTermStartDate}"/></td>
                    <td> <input type="text" class="form-control" th:field="*{ams360Policies[__${stat.index}__].policyTermEndDate}"/></td>
                    <td><input type="text" id="lineOfCoverage" th:field="*{ams360Policies[__${stat.index}__].lineOfCoverage}" /></td>
                    <td><input type="text" id="parentCompany" th:field="*{ams360Policies[__${stat.index}__].parentCompany}" /></td>
                    <td><input type="text" id="writingCompany" th:field="*{ams360Policies[__${stat.index}__].writingCompany}" /></td>
                    <td> <div th:each="billType : ${billTypeList}">
                        <input type="checkbox" th:field="*{billTypeOptions}" th:value="${billType}"/>
                        <label th:text="${billType}">Bill Types</label>
                    </div></td>
                    <td><input type="text" id="quotePremium" th:field="*{ams360Policies[__${stat.index}__].quotePremium}" /></td>
                    <td><input type="text" id="commission" th:field="*{ams360Policies[__${stat.index}__].commission}" /></td>
                </tr>
                </tbody>
            </table>
        </div>


        <h4>PMA Setup</h4>
        <div class="row" sec:authorize="hasAnyRole('ADMIN','USER')">
            <label>Sub Brand:</label>
            <th:block th:switch="${loggedUser==null or loggedUser.client==null }">
                <span th:case="false" th:text="${loggedUser.client.getLegalName()}" ></span>
                <span th:case="true">Not Applicable</span>
            </th:block>
            <th:block th:switch="${loggedUser==null or loggedUser.client==null}">
                <input th:case="false" type="hidden" name="subBrand"  id="subBrand" th:value="${loggedUser.client.getLegalName()}" />
                <input th:case="true" type="hidden" name="subBrand"   id="subBrand" value="Not Applicable" />
            </th:block>
        </div>

        <!-- Business Class Drop Down Field Below: -->
        <div class="row">
            <label for="businessClass" >Business Class: </label>
            <select class="select-2 form-control" th:field="*{businessClass}" id="businessClass" >
                    <option value="Animal Services">Animal Services</option>
                    <option value="Arts Entertainment">Arts &amp; Entertainment</option>
                    <option value="Auto Services">Auto Services</option>
                    <option value="Bonds">Bonds</option>
                    <option value="Carpet Furniture or Upholstery Cleaning">Carpet, furniture or upholstery cleaning</option>
                    <option value="Clock Making/Repair">Clock Making/Repair</option>
                    <option value="Contractor - Appliance Install/Repair">Contractor - Appliance Install/Repair</option>
                    <option value="Contractor - Carpentry (Exterior)">Contractor - Carpentry (Exterior)</option>
                    <option value="Contractor - Carpentry (Interior)">Contractor - Carpentry (Interior)</option>
                    <option value="Contractor - Concrete (No Foundations)">Contractor - Concrete (No Foundations)</option>
                    <option value="Contractor - Debris Removal">Contractor - Debris Removal</option>
                    <option value="Contractor - Doors and Windows">Contractor - Doors &amp; Windows</option>
                    <option value="Contractor - Drywall/Plastering /Stucco">Contractor - Drywall/Plastering /Stucco</option>
                    <option value="Contractor - Electrical">Contractor - Electrical</option>
                    <option value="Contractor - Excavating">Contractor - Excavating</option>
                    <option value="Contractor - Fence Installation/Repair">Contractor - Fence Installation/Repair</option>
                    <option value="Contractor - Floor Covering (Not tile or stone)">Contractor - Floor Covering (Not tile or stone)</option>
                    <option value="Contractor - General/Builder/New Construction">Contractor - General/Builder/New Construction</option>
                    <option value="Contractor - Glass Install/Repair (Non-Auto)">Contractor - Glass Install/Repair (Non-Auto)</option>
                    <option value="Contractor - Grading/Snow Removal ">Contractor - Grading/Snow Removal </option>
                    <option value="Contractor - Handyman/Remodeling">Contractor - Handyman/Remodeling</option>
                    <option value="Contractor - Heating and Air">Contractor - Heating &amp; Air</option>
                    <option value="Contractor - Interior Finish Work">Contractor - Interior Finish Work</option>
                    <option value="Contractor - Masonry">Contractor - Masonry</option>
                    <option value="Contractor - Other">Contractor - Other</option>
                    <option value="Contractor - Painting (Exterior)">Contractor - Painting (Exterior)</option>
                    <option value="Contractor - Painting (Interior)">Contractor - Painting (Interior)</option>
                    <option value="Contractor - Painting (Interior/Exterior)">Contractor - Painting (Interior/Exterior)</option>
                    <option value="Contractor - Paving">Contractor - Paving</option>
                    <option value="Contractor - Plumbing (Commercial)">Contractor - Plumbing (Commercial)</option>
                    <option value="Contractor - Plumbing (residential)">Contractor - Plumbing (residential)</option>
                    <option value="Contractor - Plumbing (Residential/Commercial)">Contractor - Plumbing (Residential/Commercial)</option>
                    <option value="Contractor - Siding and Gutter Install">Contractor - Siding &amp; Gutter Install</option>
                    <option value="Contractor - Tile/Stone/Marble/Mosaic/Terrazzo">Contractor - Tile/Stone/Marble/Mosaic/Terrazzo</option>
                    <option value="Daycares">Daycares</option>
                    <option value="Domestic Workers">Domestic Workers</option>
                    <option value="Educational Services">Educational Services</option>
                    <option value="Farm">Farm</option>
                    <option value="Food and Beverage">Food &amp; Beverage</option>
                    <option value="Generic BOP/Package (GL/Property)">Generic BOP/Package (GL/Property)</option>
                    <option value="Homecare">Homecare</option>
                    <option value="Homeowners Association">Homeowners Association</option>
                    <option value="Hotel/Motel">Hotel/Motel</option>
                    <option value="Janitorial">Janitorial</option>
                    <option value="Landscaping">Landscaping</option>
                    <option value="Lessors Risk">Lessors Risk</option>
                    <option value="Life Science">Life Science</option>
                    <option value="Locksmith">Locksmith</option>
                    <option value="Manufacturing">Manufacturing</option>
                    <option value="Medical Services">Medical Services</option>
                    <option value="Miscellaneous Services">Miscellaneous Services (Not Construction Related)</option>
                    <option value="Non-Profit">Non-Profit</option>
                    <option value="Other">Other</option>
                    <option value="Personal Lines (Non-Commercial)">Personal Lines (Non-Commercial)</option>
                    <option value="Personal Services (Beauty, Wellness, Etc.)">Personal Services (Beauty, Wellness, Etc.)</option>
                    <option value="Personal Trainers/Fitness Instructors/Yoga Instructors">Personal Trainers/Fitness Instructors/Yoga Instructors</option>
                    <option value="Photography/Videography">Photography/Videography</option>
                    <option value="Professional Services">Professional Services</option>
                    <option value="Religious Organizations">Religious Organizations</option>
                    <option value="Retail/Wholesale">Retail/Wholesale</option>
                    <option value="Security Firms (Including Private Investigators)">Security Firms (Including Private Investigators)</option>
                    <option value="Sign painting/lettering (Exterior)">Sign painting/lettering (Exterior)</option>
                    <option value="Sign painting/lettering (Interior)">Sign painting/lettering (Interior)</option>
                    <option value="Solar Energy">Solar energy</option>
                    <option value="Sports/Recreation/Leisure (Other than Fitness and Trainers)">Sports/Recreation/Leisure (Other than Fitness &amp; Trainers)</option>
                    <option value="Storage Facilities">Storage Facilities</option>
                    <option value="Technology">Technology</option>
                    <option value="Trucking/Transportation">Trucking/Transportation</option>
                    <option value="Upholstery Work">Upholstery Work</option>
                    <option value="Window Cleaning">Window Cleaning</option>
                    <option value="Workers Compensation">Workers Compensation</option>
                    </select>


        </div>
        <div class="row">
            <label for="descriptionOfOps">Description of Operations:</label>
            <input type="text" id="descriptionOfOps" th:field="*{descriptionOfOps}" required="true" />
        </div>
        <div class="formFooter">
           <input id="send"  type="submit" value="send" name="send" class="btn btn-success finish" data-loading-text="Sent!"/>
        </div>
    </form>

Это контроллер, кнопка addPolicy должна переходить по ссылке / addPolicy, кнопка отправки должна переходить по ссылке / send.

    @GetMapping("/directBind")
    public String getDirectBind(Model model){
        List<String> businessAgencies = new ArrayList<String>();
        businessAgencies.add("Personal");
        businessAgencies.add("Commercial");
        businessAgencies.add("Life");
        businessAgencies.add("Benefits");
        businessAgencies.add("Health");
        businessAgencies.add("Non P and C");
        model.addAttribute("businessAgencies", businessAgencies);

        Ams360Policy ams360Policy = new Ams360Policy();
        List<String> billTypeList = new ArrayList<String>();
        billTypeList.add("Direct Bill");
        billTypeList.add("Agency Bill");
        model.addAttribute("billTypeList", billTypeList);
        ams360Policy.setBillTypeOptions(billTypeList);

        DirectBind directBind = new DirectBind();

        List<String> businessAgencyList = new ArrayList<String>();
        directBind.setBusinessAgencyList(businessAgencyList);

        model.addAttribute("directBind", directBind);

        return "directBind";
    }

    @RequestMapping(value="/addPolicy", params="addPolicy")
    public String addPolicy(final DirectBind directBind, Model model){
        directBind.getAms360Policies().add(new Ams360Policy());
        model.addAttribute("directBind", directBind);
        return "addPolicy";
    }

    @RequestMapping(value="/send", params="send")
        public String send(Model model, @ModelAttribute(value="directBind") DirectBind directBind){
        List<String> businessAgencyList = directBind.getBusinessAgencyList();

        Mail mail = new Mail();
        mail.setFrom("no-reply@hgitservices.com");
        mail.setTo(new String[]{"stacief@hgitservices.com"});
        mail.setSubject("Oli Affiliate - AMS360 & PMA Data Checklist");

        Map<String, Object> mailModel = new HashMap<String, Object>();
        mail.setModel(mailModel);

        try {
            emailService.sendSimpleMessage(mail, directBind);
        } catch (Exception e) {
            e.printStackTrace();
            return ("redirect:/?sentMessageFail");
        }
        return ("redirect:/?sentMessage");
    }

    @RequestMapping(value="/email")
    public String email(){
        return "emailMessage";
    }
}

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

Я предполагаю, что вы намерены использовать один пружинный контроллер для обработки действий отправки из двух кнопок отправки.

  • Вы можете использовать одно и то же имя и разные значения атрибута для двух кнопок ввода HTML.Атрибут имени и значения кнопок отправляется контроллеру в качестве параметра запроса.Это позволит контроллеру определить, какая кнопка была нажата, и предпринять соответствующие действия.

    <input id="send_id"  type="submit" name="action" value="send"/>
    <input id="addPolicy_id"  type="submit" name="action" value="addPolicy"/>
    @RequestMapping(value="/directBind")
    public String doExecute(@RequestParam("action") String action, Model model, @ModelAttribute(value="directBind") DirectBind directBind){
    if (action=="send"){
    //do something
    send();
    }
    if (action=="addPolicy"){
    //do something
    addPolicy();
    }
}
0 голосов
/ 02 октября 2018

Если вы используете javascript или js framework, такие как jQuery, вы можете привязать кнопку к функции, которая отправит форму указанному действию.

Подробнее см. Обработка отправки формы с несколькими кнопками отправки в Javascript .

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