Форум программистов, компьютерный форум, киберфорум
Наши страницы
Java EE (J2EE)
Войти
Регистрация
Восстановить пароль
 
XelMed
3 / 3 / 0
Регистрация: 05.05.2012
Сообщений: 20
#1

SOAP и NULL - Java EE

11.09.2012, 07:03. Просмотров 1045. Ответов 8
Метки нет (Все метки)

Здравствуйте, собственно такой вопрос:
Как вернуть в веб методе поле со значением null?
То есть у меня есть класс на основе таблицы из бд, я создаю list из данного класса, но при возврате листа в веб методе, в сообщении будут отображены только поля значение которых не равно null.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.09.2012, 07:03
Я подобрал для вас темы с готовыми решениями и ответами на вопрос SOAP и NULL (Java EE):

Soap запрос
Здравствуйте! Нужно реализовать на Java soap запрос...

SOAP service deployment in GlassFish
Хочу разобраться с SOAP сервисами, для этого использую пример из книги по...

WSDL SOAP и сертификат - как?
Доброго времени суток!!! Есть одна компания куда нужно положить данные на БД....

Tomcat, Oracle driver, SOAP
Есть проект написаный на JAVA который представляет некоторый набор функций...

SOAP Web Service Server
Добрый день. Я создала веб-сервис по инструкции в IDE Eclipse EE,...

Boot data-rest and soap
Допустим есть бутовый рест-сервис. Описаны несколько Entity, объявлены...

8
mutagen
2564 / 2237 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
11.09.2012, 12:33 #2
где код?
0
XelMed
3 / 3 / 0
Регистрация: 05.05.2012
Сообщений: 20
12.09.2012, 04:30  [ТС] #3
Вчера не на работе уже был, не смог ответить.
вот класс:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package tables;
 
import java.io.Serializable;
import java.math.BigInteger;
import java.util.Date;
import java.util.Collection;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
 
/**
 *
 * @author root
 */
@Entity
@Table(name = "users", catalog = "otava", schema = "public")
@XmlRootElement
public class Users implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
  @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "user_id")
    private Integer userId;
    @Column(name = "group_id")
    private BigInteger groupId;
    @Column(name = "category_id")
    private BigInteger categoryId;
    @Basic(optional = false)
    @Column(name = "create_date")
    //@Temporal(TemporalType.TIMESTAMP)
    private String createDate;
    @Basic(optional = false)
    @NotNull
    @Column(name = "ls", nullable = false)
    private long ls;
    @Size(max = 16)
    @Column(name = "ustr", length = 16)
    private String ustr;
    @Size(max = 16)
    @Column(name = "fio", length = 16)
    private String fio;
    @Size(max = 256)
    @Column(name = "description", length = 256)
    private String description;
    @Basic(optional = false)
    @NotNull
    @Column(name = "locked", nullable = false)
    private boolean locked;
    @Column(name = "lock_date")
    @Temporal(TemporalType.TIMESTAMP)
    private Date lockDate;
    @OneToMany(mappedBy = "userId")
    private Collection<Logins> loginsCollection;
 
    public Users() {
    }
 
    public Users(Integer userId) {
        this.userId = userId;
    }
 
    public Users(Integer userId, String createDate, long ls, boolean locked) {
        this.userId = userId;
        this.createDate = createDate;
        this.ls = ls;
        this.locked = locked;
    }
 
    public Integer getUserId() {
        return userId;
    }
 
    public void setUserId(Integer userId) {
        this.userId = userId;
    }
 
    public BigInteger getGroupId() {
        return groupId;
    }
 
    public void setGroupId(BigInteger groupId) {
        this.groupId = groupId;
    }
 
    public BigInteger getCategoryId() {
        return categoryId;
    }
 
    public void setCategoryId(BigInteger categoryId) {
        this.categoryId = categoryId;
    }
 
    public String getCreateDate() {
        return createDate;
    }
 
    public void setCreateDate(String createDate) {
        this.createDate = createDate;
    }
 
    public long getLs() {
        return ls;
    }
 
    public void setLs(long ls) {
        this.ls = ls;
    }
 
    public String getUstr() {
        return ustr;
    }
 
    public void setUstr(String ustr) {
        this.ustr = ustr;
    }
 
    public String getFio() {
        return fio;
    }
 
    public void setFio(String fio) {
        this.fio = fio;
    }
 
    public String getDescription() {
        return description;
    }
 
    public void setDescription(String description) {
        this.description = description;
    }
 
    public boolean getLocked() {
        return locked;
    }
 
    public void setLocked(boolean locked) {
        this.locked = locked;
    }
 
    public Date getLockDate() {
        return lockDate;
    }
 
    public void setLockDate(Date lockDate) {
        this.lockDate = lockDate;
    }
 
    @XmlTransient
    public Collection<Logins> getLoginsCollection() {
        return loginsCollection;
    }
 
    public void setLoginsCollection(Collection<Logins> loginsCollection) {
        this.loginsCollection = loginsCollection;
    }
 
    @Override
    public int hashCode() {
        int hash = 0;
        hash += (userId != null ? userId.hashCode() : 0);
        return hash;
    }
 
    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Users)) {
            return false;
        }
        Users other = (Users) object;
        if ((this.userId == null && other.userId != null) || (this.userId != null && !this.userId.equals(other.userId))) {
            return false;
        }
        return true;
    }
 
    @Override
    public String toString() {
        return "tables.Users[ userId=" + userId + " ]";
    }
    
}
А вот как вывожу данные:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 /**
     * Операция веб-службы
     */
    @WebMethod(operationName = "GetAllUser_XML")
    public List<Users> GetAllUser_XML() throws Exception {
        Session ses = NewHibernateUtil.getSessionFactory().getCurrentSession();
        List<Users> ww = new ArrayList<Users>();
 
        try {
            ses.beginTransaction();
            ww = ses.createCriteria(Users.class).list();
            return ww;
        } catch (Exception ex) {
            throw ex;
        } finally {
            ses.close();
        }
    }
Добавлено через 1 час 1 минуту
можно конечно в каждом кассе прописать еще @XmlAccessorType(XmlAccessType.NONE)
и для каждого атрибута @XmlElement(nillable=true), но по моему это более чем криво.
0
Sworfly
7 / 2 / 1
Регистрация: 02.08.2012
Сообщений: 17
17.09.2012, 12:13 #4
Хм ЕМНИП, то переменные со значением null просто не маршализуются. А при унмаршалинге автоматически на место отсутствующих элементов подставляется null.
0
XelMed
3 / 3 / 0
Регистрация: 05.05.2012
Сообщений: 20
17.09.2012, 12:24  [ТС] #5
а можно чуть подробней какую анотацию поставить?
0
kmi
55 / 55 / 13
Регистрация: 26.04.2010
Сообщений: 173
19.09.2012, 12:20 #6
Sworfly прав. В конверте null-значения либо отсутствуют, либо имеют атрибут nil="true". Смысл одинаков. Атрибут nil объявлен в пространстве имён http://www.3w.org/2001/XMLSchema-Instance.

Собственно, зачем Вам явно указывать null?
1
XelMed
3 / 3 / 0
Регистрация: 05.05.2012
Сообщений: 20
19.09.2012, 13:06  [ТС] #7
да вот не умеют те кто пишет клиент обрабатывать отсутствующее значение( и договориться не получилось.
0
kmi
55 / 55 / 13
Регистрация: 26.04.2010
Сообщений: 173
19.09.2012, 16:55 #8

Не по теме:

Т.е. эти "писатели" решили, что, раз они не могут обработать стандартный протокол SOAP (http://www.w3.org/TR/soap12-part1/), то Вы должны этот протокол переписать? Тяжёлый случай...



Ставьте xsi:nil="true" для соответствующего элемента. Это единственный способ явно указать отсутствие значения для клиента.

Если контрагент начнёт гнуть, покажите стандарт. Иногда помогает, хотя, увы, не всегда...
1
XelMed
3 / 3 / 0
Регистрация: 05.05.2012
Сообщений: 20
19.09.2012, 17:21  [ТС] #9
ну так щас и делаю, просто коряво это. ладно. спасибо всем кто помогал решить проблему))
0
19.09.2012, 17:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.09.2012, 17:21
Привет! Вот еще темы с решениями:

Soap, Java, Гис ЖКХ
Добрый день! Имеет ли кто опыт работы с soap в Java? Поставлена задача наладить...

Источники знаний по wsdl & soap
Подскажите пожалуйста и желательно на русском языке. Заранее спасибо.

Заголовок сообщения: Отправка SOAP request сервером
Добрый день! Не могу разобраться с вопросом. Есть веб-сервис работающий по...

SOAP 1.1 Weblogic XML Declaration
У меня большая проблема, я использую SOAP Messeging на Weblogic 8.1 там...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru