【问题标题】:Get FormDataParam Properties and Attributes获取 FormDataParam 属性和属性
【发布时间】:2012-12-09 14:23:15
【问题描述】:
    @POST
    @Path("post")
    @Consumes("multipart/form-data")
    public Response postCategory(@FormDataParam("text1") String text1,
            @FormDataParam("file1") InputStream file1,
            @FormDataParam("text2") String text2,
            @FormDataParam("file2") InputStream file2) {
        System.out.println("CategoryService.postCategory()");
        System.out.println("text1:" + text1);
        System.out.println("text2:" + text2);

        String uploadedFileLocation = "d://uploaded/test.jpg";
        writeToFile(file1, uploadedFileLocation);

        return Response.ok().build();
    }

使用此代码,我可以将 HtmlInputFile 作为 InputStream,将 HtmlInputText 作为 String,但我想获得HtmlInputText 的另一个属性,例如id, name, class 甚至更多:我的动态属性如下:

<input type='text' myattr='myattr-value' name='inpp'/>

【问题讨论】:

    标签: java web-services forms post jersey


    【解决方案1】:

    提交表单时(根据WC3 spec),名称和值将发送到服务器。要获得其他值,我建议创建一些额外的隐藏输入。

    <input type="hidden" name="valueOne" value="">
    <input type="hidden" name="valueTwo" value="">
    

    还有一些 javascript 在提交时设置这些字段。

    <script>
        document.yourForm.elements["valueOne"].value = "someValue";
        document.yourForm.elements["valueTwo"].value = "someOtherValue";
    </script>
    
    <form name="yourForm" method="POST" onSubmit="setValues();">
    

    但是,您可能想问为什么 id 和类对表单提交很重要。这种类型的设计可能会将您的后端控制器与前端标记耦合得太紧。这可能会导致一些问题。

    【讨论】:

    • 看我的场景:我有一个表单,用户可以在其中添加图片数量,(1、5、10 或更多,未知)我怎样才能在后台获取它们?
    • 在这种情况下,您可能应该使用 ajax 触发多个帖子,而不是尝试在单个帖子中处理。
    • Ajax 可以包装在提交调用中。您只需要构建回调结构,以便在处理完最后一个字段后进行“真正的”提交。
    猜你喜欢
    • 2015-01-29
    • 1970-01-01
    • 2011-03-18
    • 2014-06-22
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 2014-01-17
    相关资源
    最近更新 更多