如何只格式化输入框的显示值,存储未格式化的数据? [关闭]

问题描述 投票:0回答:0

我正在构建一个动态逻辑,根据我从数据库中获取的格式来格式化电话号码。

我正在开发一个基于 struts 1.3 的 Web 应用程序。我在其中使用自定义创建的标签来格式化电话号码。

我的数据库正在动态返回一个未格式化的数字,如 (8324734741) 和一个格式 (###-### ####)。我想要实现的是 jsp 将有两个输入字段,一个输入字段用于显示数据并使用 javascript 进行映射,并且其名称未使用 javabean(不同名称)进行映射。其他输入字段将是一个隐藏的输入字段,用于使用formbean 名称将值存储和检索到数据库。使用以下内容,我只能根据掩码设置输入字段的格式,直到我单击它为止。它在加载 jsp 页面时没有格式化。当我单击保存数据时,它不会保存数据,因为 displayInputField 未映射到 javabean。到现在为止我已经做到了。以任何方式提供任何解决方案来实现这一目标。

    public class Format extends BaseFieldTag {
        private String size;
        private String maxlength;
        private String type = "text";
        private String value = "";
        private String property = null;
        private String label = null;
        private String formatconfigcode = null;
        private String formbeanname = null;
        private boolean brtag;
        private boolean hiddenfield;

//this part contains getter and setters
public int doStartTag() throws JspException {

        HttpServletRequest request = (HttpServletRequest) pageContext.getRequest();
        DbUserSession sessionUser = SessionHelpers.getUserSession(request);
        FormatDAO fdao = new FormatDAO();
        String format = fdao.getFormat(this.getFormatconfigcode(), sessionUser);    //(###) ###-####

        Object bean = pageContext.findAttribute(getFormbeanname());
        try {
            value = BeanUtils.getProperty(bean, getProperty());         //8192727827
        } catch (Exception e) {
            e.printStackTrace();
        }

           try {
                JspWriter out = pageContext.getOut();
                StringBuffer sb = new StringBuffer();
                sb.append("<label class='control' style='width: 50%;'>");
                sb.append("<span class='control-label'>" + getName() + ":</span>");
                
                sb.append("<input type='hidden' name='").append(getProperty()).append("' ");
                sb.append("value='").append(value).append("'/>");
                
                sb.append("<input ");
                sb.append("size='").append(getSize()).append("' ");
                sb.append("maxlength='").append(getMaxlength()).append("' ");
                sb.append("id='").append(getId()).append("' ");
                sb.append("class='control-field' ");
                sb.append("type='").append(getType()).append("' ");
                sb.append("value='").append(value).append("'");
                sb.append("/>");

                if (getType().equals("text") && format != null) {
                    sb.append("</label>");
                    sb.append("<script type='text/javascript'>");
                    String idMask = getId() + "_mask";
                    sb.append("var ").append(idMask).append(" = new Mask('").append(format).append("'); ");
                    sb.append(idMask).append(".attach(document.getElementById('").append(getId()).append("'));");
                    sb.append("</script>");
                } else {
                    sb.append("/>");
                    sb.append("</label>");
                }

                out.println(sb.toString());

            } catch (Exception e) {
                e.printStackTrace();
            }


        return SKIP_BODY;
    }
javascript java jquery struts
© www.soinside.com 2019 - 2024. All rights reserved.