0

このフロントエンドフレームワークアプリケーションを使用するのは初めてです...

私は最近smartgwtを使い始め、SpringMVC統合を備えた新しいアプリケーションを構築しています。

RestDataSourceでListGridを使用しています(プレーンJSONの場合はmvc:annotation-drivenでRestサービスを使用します)

サービスが適切に消費されていることがわかります。おそらく、グリッドにデータが表示されていない可能性があります。

誰かがここで私を助けることができますか?

これが私のListGridクラスです

パブリッククラスListGridはcom.smartgwt.client.widgets.grid.ListGridを拡張します{

private final SpringJSONDataSource springJSONDataSource;

public ListGrid(List<DataSourceField> fields) {
    this(new PatientDataSource(fields));
}

public ListGrid(SpringJSONDataSource springJSONDataSource) {
    this.springJSONDataSource = springJSONDataSource;
    init();
}

private void init() {
    setAutoFetchData(true);
    setAlternateRecordStyles(true);
    setEmptyCellValue("???");
    setDataPageSize(50);

    setDataSource(springJSONDataSource);
}

}

これで、データソースの実装があります

パブリック抽象クラスSpringJSONDataSourceはRestDataSourceを拡張します{

protected final HTTPMethod httpMethod;

public SpringJSONDataSource(List<DataSourceField> fields) {
    this(fields, HTTPMethod.POST);
}

public SpringJSONDataSource(List<DataSourceField> fields, HTTPMethod httpMethod) {
    this.httpMethod = httpMethod;
    setDataFormat(DSDataFormat.JSON);
    addDataSourceFields(fields);
    setOperationBindings(getFetch());
    addURLs();
}

private void addURLs() {
    if(getUpdateDataURL() != null)
        setUpdateDataURL(getUpdateDataURL());

    if(getRemoveDataURL() != null)
        setRemoveDataURL(getRemoveDataURL());

    if(getAddDataURL() != null)
        setAddDataURL(getAddDataURL());

    if(getFetchDataURL() != null)
        setFetchDataURL(getFetchDataURL());

}

private void addDataSourceFields(List<DataSourceField> fields) {
    for (DataSourceField dataSourceField : fields) {
        addField(dataSourceField);
    }
}

protected abstract OperationBinding getFetch();
protected abstract OperationBinding getRemove();
protected abstract OperationBinding getAdd();
protected abstract OperationBinding getUpdate();

public abstract String getUpdateDataURL();
public abstract String getRemoveDataURL();
public abstract String getAddDataURL();
public abstract String getFetchDataURL();

}

SpringJSONDataSourceを拡張するクラスPatientDataSource

パブリッククラスPatientDataSourceはSpringJSONDataSourceを拡張します{

public PatientDataSource(List<DataSourceField> fields) {
    super(fields);
    setPrettyPrintJSON(true);
}

@Override
protected OperationBinding getFetch() {
    OperationBinding fetch = new OperationBinding();
    fetch.setOperationType(DSOperationType.FETCH);
    fetch.setDataProtocol(DSProtocol.POSTMESSAGE);
    DSRequest fetchProps = new DSRequest();
    fetchProps.setHttpMethod(httpMethod.toString());
    fetch.setRequestProperties(fetchProps);

    return fetch;
}

@Override
public String getFetchDataURL() {

    return "/spring/fetchPatients";
}

@Override
protected OperationBinding getRemove() {
    return null;
}

@Override
public String getRemoveDataURL() {
    return null;
}

@Override
protected OperationBinding getAdd() {
    return null;
}

@Override
public String getAddDataURL() {
    return null;
}

@Override
protected OperationBinding getUpdate() {
    return null;
}

@Override
public String getUpdateDataURL() {
    return null;
}

}

私のスプリングコントローラーPatientControler

@Controller public class PatienController {

Logger logger = Logger.getLogger(PatienController.class);

@Autowired
private PatientServices patientServices;

@RequestMapping(value = "/patientTest", method = RequestMethod.GET)
@ResponseBody
public Object getTest()
{
    return patientServices.getAllPatients();
}

@RequestMapping(value = "/fetchPatients", method = RequestMethod.POST)
@ResponseBody
public Object getAllPatients()
{
    return patientServices.getAllPatients();
}

}

PatientServiceImpl

パブリッククラスPatientServicesImplはPatientServicesを実装します{

public List<Patient> getAllPatients() {

    List<Patient> patients = new ArrayList<Patient>();
    Patient patient;

    for(int i = 0 ; i < 500 ; i++){
        patient = new Patient();
        patient.setDateOfBirth(new Date());
        patient.setFirstName("Joe");
        patient.setMiddleName("Moe");
        patient.setLastName("Blow");
        patient.setLastConsultation(new Date());
        patient.setSex(Sex.M);

        patients.add(patient);
    }

    return patients;
}

}

*私は今本当に立ち往生しています私はすべてのタイプの答えを探していました....しかし、これまでのところ、RestDataSourceインペンションからのtransformResponseをオブジェクトとしてオーバーライドしようとしても何も機能しませんでした。オブジェクトオブジェクト]、[オブジェクトオブジェクト]、[オブジェクトオブジェクト]、[オブジェクトオブジェクト]、[オブジェクトオブジェクト] *

4

1 に答える 1

0

RestDataSourceから転送されるデータは、RestDataSourceのJavaDocに記述されている特定の形式を持ってい ます。サーバーは要求を理解し、有効な応答を返送する必要があります。

現時点では、あなたの例は契約を尊重していないようです。

サーバーとの間で送受信されるトラフィックをデバッグするには、SmartClient-Consoleを使用できます。次のようなブラウザのブックマークで開くことができます。

javascript:isc.showConsole()

当然のことながら、次のモジュールを追加してこのコンソールを展開する必要がありますgwt.xml

<inherits name="com.smartclient.tools.SmartClientTools"/>

次に、[ RPC]タブに移動し、 Track-RPCを確認します

于 2012-11-20T22:16:04.143 に答える